如图1的这棵树http://blog.csdn.net/andy8205/archive/2007/08/03/1724625.aspx
怎样定义一个存放按层次遍历得到的故障树各节点的CList链表:CList<FtNode, FtNode&> FtList,可以实现如图2所示的存储形式?
哪位大侠可以给出CList<FtNode, FtNode&> FtList中的代码呀,有急用,谢谢啦,立即给分!

解决方案 »

  1.   

    先定义节点数据的类 CNodeDatatypedef CList<CNodeData,&CNodeData> CMyList;CMyList m_list;m_list.Add.....
      

  2.   

    CList <CNodeData,&CNodeData>
    ==>
    CList <CNodeData,CNodeData&>
      

  3.   


    首先,得告诉你:图2是图1的树在计算机中的一种存存储结构,因为计算机中存储的数据都是二维的。看起来图1应该是一个二叉树的结构,那就以二叉树来大概说明一下吧。如果与实际有出入,那你得先给出,图1树的在存储结构呀。因为具体的遍历是根据存储结构来确定的呀。
       设节点中的数据已经定义为:FtNode类型。
    typedef struct tree       //定义二叉树节点的结构
    {
        FtNode Data;
        tree * LeftChild;
        tree * RightChild;
    }TREE;
       //遍历二叉树CList <FtNode, FtNode&> FtList;
    void GoW(TREE* t)
    {
      CList Temp = new(CList);
      Temp = t->Data;
      FtList.AddTail(Temp);
      if(t->LeftChild != NULL)Gow(t->LeftChild);
      if(t->RightChild!= NULL)Gow(t->RightChild);
    }
      

  4.   

    写错了,改一下://遍历二叉树 
    CList <FtNode, FtNode&> FtList; 
    void GoW(TREE* t) 

      FtList.AddTail(t->Data); 
      if(t->LeftChild != NULL)Gow(t->LeftChild); 
      if(t->RightChild!= NULL)Gow(t->RightChild); 
    }
      

  5.   

    重新写一下:设节点中的数据已经定义为:FtNode类型。 
    typedef struct tree      //定义二叉树节点的结构 

        FtNode Data;         //
        tree * LeftChild;    //
        tree * RightChild;   //
    }TREE;   
    CList <FtNode, FtNode&> FtList;  ////广度优先遍历二叉树  
    void BFS(TREE* t) 

      if(t==NULL)return;   //若是棵空树,则退出
      TREE Temp;           //定义一个临时变量
      FtList.AddTail(*t);  //将树根添加到FtList的表头
      POSITION pos = FtList.GetHeadPosition(); //获取表头
      for (int i = 0; i < FtList.GetCount(); i++)
      {
         Temp =(TREE)FtList.GetNext(pos));    //从表中取出pos指向的节点
         if(Temp.LeftChild != NULL)           //若该节点的左孩子不空
            FtList.AddTail(*(Temp.LeftChild )); //则将左孩子添加到FtList表尾
         if(Temp.RightChild!= NULL)              //若该节点的右孩子不空
            FtList.AddTail(*(Temp.RightChild));  //则将右孩子添加到FtList表尾
      } //遍历结束的同时,FtList表也建成了。
    )
      

  6.   


    其实你只要用GOOGLE搜一下“广度优先遍历二叉树”或者是“按层次遍历二叉树”就可以找到一大堆的呀。呵呵。
      

  7.   

    太笨了,没找到CLIST和按层次遍历二叉树同时都满足的例子,嘿嘿,强烈要求加楼上的为好友
      

  8.   


       唉!那就你不会分开找呀?先找到CLIST,知道怎么用CLIST后,再找按层次遍历二叉树的例子,学会算法,然后就可以自己改,将两个结合在一起就行了呀。要知道所谓的“编程”就是将许多现有的东西按自己的需要结合在一起呀。呵呵。
      PS:有时候搜索的时候,应该注意不同的称呼。比如“按层次遍历二叉树”与“广度优先遍历二叉树”本来就是同一回事,有时候你按前面的名称搜不到话,不防换成后面的名称再搜搜,也许就能找到你想要的。呵呵。