下面我使用vector容器为基础来构成一棵树

 下面我使用vector容器为基础来构成一棵树.  
  例如我们要生成以下结构的树.  
   
  3  
  2   2   2   2  
  1111   1111   1111   1111  
   
  这是课四叉数,   而且下层比上层的值小1.  
   
  来看代码:  
  //使用STL构成一棵树  
   
  #include<vector>         //vector容器  
  #include<iostream>         //输入输出  
   
  using   namespace   std;  
   
  const   int   LEAVES_MAX   =   4;     //最大子叶数  
   
  //树节点结构  
  struct   TreeNode  
  {  
      int   num;  
      vector<TreeNode>   Sub;  
  };  
   
  vector<TreeNode>::iterator   p;     //根节点指针  
   
  //用递归法生成一棵树  
  void   CreateTree(vector<TreeNode>::iterator   Root)  
  {  
      //如果节点值小于等于1,返回  
      if(Root->num<=1)   return;  
       
      //新节点指针  
      TreeNode   *newNode;  
       
      //为新子叶设置值  
      for(int   i=1;i<=LEAVES_MAX;i++)  
      {  
          newNode   =new(TreeNode);  
          newNode->num   =   Root->num   -   1;  
          Root->Sub.push_back(*newNode);  
          delete   newNode;  
      }  
       
      //递归产生子树  
      vector<TreeNode>::iterator   child;  
      for(child=Root->Sub.begin();  
        child!=Root->Sub.end();  
          child++)  
          {  
              CreateTree(child);  
          }  
  }  
   
  //递归显示树的内容  
  void   DisplayTree(vector<TreeNode>::iterator   Root)  
  {  
      //显示节点内容  
      cout<<"   "<<Root->num;  
      //如果此节点没有子叶,返回  
      if(Root->Sub.empty()==true)   return;  
       
      //递归处理子树  
      vector<TreeNode>::iterator   child;  
      for(child=Root->Sub.begin();  
        child!=Root->Sub.end();  
          child++)  
          {  
              DisplayTree(child);  
          }  
   
  }  
   
  void   main()  
  {  
      TreeNode   *Root;  
      Root   =   new(TreeNode);  
      Root->num   =   3;  
      CreateTree(Root);  
      DisplayTree(Root);  
      delete   Root;  
  }  

原文地址:https://www.cnblogs.com/carl2380/p/1924615.html