zoukankan      html  css  js  c++  java
  • 下面我使用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;  
      }  

  • 相关阅读:
    vue 购买弹出框 动画
    vue 和animate.css 的动画使用
    获得url地址?后的参数
    Java 实现随机数组元素升降序
    java for循环实现九九乘法表
    java 随机生成字符串验证码
    Mysql插入值时,避免重复插入
    Mysql的unique和primary key
    2020 3.6日电话面试(某外包公司)
    Intellij IDEA配置javaweb项目
  • 原文地址:https://www.cnblogs.com/carl2380/p/1924615.html
Copyright © 2011-2022 走看看