[C++] 数据结构与算法----2.9 求非空树的度 →→→→→进入此内容的聊天室

来自 , 2020-05-14, 写在 C++, 查看 120 次.
URL http://www.code666.cn/view/814a9c18
  1. #include <iostream>
  2. using namespace std;
  3. typedef char TElemType;
  4. typedef struct TNode
  5. {
  6.         TElemType data;
  7.         TNode*parent,*fc,*ns;
  8. }*tree;
  9. void Treelists(tree T);//树的广义表形式输出
  10. int duTree(tree T);//非空树的度
  11. void CreateTree(tree &T, char s[]);
  12. void CreateTree(tree &T, char s[], int &i);
  13.  
  14. int main()
  15. {
  16.         tree T;
  17.         char s[]="ABDF##E##C#H###";
  18.         //char s[]="AB#C###";
  19.         //char s[]="A##";
  20.         CreateTree(T,s);
  21.         cout<<"该树的广义表形式输出为:"<<endl;
  22.         Treelists(T);
  23.         cout<<endl<<"该树的度为"<<duTree(T)<<endl;
  24.         return 0;
  25. }
  26.  
  27. void CreateTree(tree &T, char s[], int &i)
  28. {
  29.         i++;
  30.         if (s[i] == '#') { T = NULL; return; }
  31.         T = new TNode;
  32.         T->data = s[i];      
  33.         CreateTree(T->fc, s, i);
  34.         CreateTree(T->ns, s, i);
  35. }
  36. void CreateTree(tree &T, char s[])
  37. {  
  38.         int i = -1;
  39.         CreateTree(T, s, i);
  40. }
  41. void Treelists(tree T)
  42. {
  43.         tree p;
  44.         if(!T){cout<<'#';return;}
  45.         cout<<T->data;
  46.         p=T->fc; if(!p) return;
  47.         cout<<'(';
  48.         while(p)
  49.         {
  50.                 Treelists(p);p=p->ns;
  51.                 if(p) cout<<',';
  52.         }
  53.         cout<<')';
  54. }
  55. int duTree(tree T)
  56. {
  57.         int m = 0;
  58.         if (!T) { return 0; }
  59.         tree p = T->fc;
  60. while (p)
  61.         {
  62.                 m++;
  63.                 p=p->ns;
  64.         }
  65.         int n1 = duTree(T->fc);
  66.         if (n1 > m)m = n1;
  67.         int n2 = duTree(T->ns);
  68.         return m > n2 ? m : n2;
  69.  
  70. }

回复 "数据结构与算法----2.9 求非空树的度"

这儿你可以回复上面这条便签

captcha