哇,你分多得用不完吗?这和http://www.csdn.net/Expert/topic/488/488610.shtm有什么区别,又开300分。你今天至少开了900多分了吧?

解决方案 »

  1.   

    void CTreeView::OnDraw(CDC* pDC)
    {
    CRect rc;
    GetClientRect(rc);
    pDC->SetMapMode(MM_LOENGLISH);
    DrawTree(pDC, rc.right/2, -rc.bottom, (double)rc.bottom*0.2, 1.57, 10);
    }int CTreeView::DrawTree(CDC *pDC, int xStart, int yStart, double length, double angle, int num)
    {
    int xEnd, yEnd;
    if(num == 0)
    return 1; xEnd = xStart + (int)(length*cos(angle));
    yEnd = yStart + (int)(length*sin(angle)); pDC->MoveTo(xStart, yStart);
    pDC->LineTo(xEnd, yEnd); DrawTree(pDC, xEnd, yEnd, length * 0.6, angle + 0.624, num - 1);
    DrawTree(pDC, xEnd, yEnd, length * 0.85, angle + 0.08, num - 1);
    DrawTree(pDC, xEnd, yEnd, length * 0.65, angle - 0.60, num - 1);

    return 1;
    }
      

  2.   

    to:chenzhou35(chenzhou35)包括父节点的亲兄弟节点。我的意思是当我选择一棵树的
    任意节点时,从这个节点起,
    1。遍历它的所有的孩子节点,
    2。遍历它的所有的父辈节点(包括父节点的亲兄弟节点,不包括非亲兄弟)
      

  3.   

    遍历孩子节点的算法你已经知道,现在给出兄弟节点和父节点的算法。同样没调试,直接在这里写的,你试试吧。fun(HTREEITEM hItem)
    {
      HTREEITEM hParenItem,hSiblingItem;
      hParentItem = GetParentItem(hItem);        //获取父节点
      if(!hParent)                               //已经到达根节点。
           return ;
      hSiblingItem = GetChildItem(hParentItem);  //获取第一个兄弟节点
      while(hSiblingItem)
      {
            hSiblingItem = GetNextSiblingItem(hSiblingItem);  //获取所有的其他兄弟节点,包括指定节点
      }
      
      fun(hParenItem);                                   //遍历父节点及其兄弟节点
    }