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;   
      }
  • 相关阅读:
    jQuery ajax解析xml文件demo
    Jquery ajax传递xml方式在ie8下兼容问题
    Ajax 跨域请求
    【leetcode刷题笔记】Maximal Rectangle
    【leetcode刷题笔记】Substring with Concatenation of All Words
    【leetcode刷题笔记】Largest Rectangle in Histogram
    【leetcode刷题笔记】Decode Ways
    【leetcode刷题笔记】3Sum Closest
    【leetcode刷题笔记】3Sum
    【leetcode刷题笔记】Divide Two Integers
  • 原文地址:https://www.cnblogs.com/carl2380/p/2086304.html
Copyright © 2011-2022 走看看