zoukankan      html  css  js  c++  java
  • SDUT 216 数据结构实验之二叉树的建立与遍历

      1 #include <cstdio>
      2 #include <cstring>
      3 #include <cstdlib>
      4 #include <algorithm>
      5 #include <iostream>
      6 
      7 using namespace std;
      8 
      9 struct N
     10 {
     11     char data;
     12     N *l,*r;
     13 };
     14 
     15 N *creat()
     16 {
     17     N *p = (N *)malloc(sizeof(N));
     18     p->l = p->r = NULL;
     19     return p;
     20 }
     21 
     22 int site = 0;
     23 
     24 bool insert(N *root,char *s)
     25 {
     26     if(s[site] == '')
     27         return false;
     28 
     29     if(s[site] == ',')
     30     {
     31         root = NULL;
     32         site++;
     33         return true;
     34     }
     35     else
     36     {
     37         root->data = s[site++];
     38         root->l = creat();
     39         if(insert(root->l,s))
     40             root->l = NULL;
     41         root->r = creat();
     42         if(insert(root->r,s))
     43             root->r = NULL;
     44         return false;
     45     }
     46 }
     47 
     48 
     49 void output1(N *root)
     50 {
     51     if(root == NULL)
     52         return ;
     53     output1(root->l);
     54     cout<<root->data;
     55     output1(root->r);
     56 }
     57 
     58 void output2(N *root)
     59 {
     60     if(root == NULL)
     61         return ;
     62 
     63     if(root->l == NULL && root->r == NULL)
     64     {
     65         cout<<root->data;
     66         return ;
     67     }
     68 
     69     output2(root->l);
     70     output2(root->r);
     71     cout<<root->data;
     72 }
     73 
     74 int ans;
     75 
     76 void depth(N *root,int dep)
     77 {
     78 
     79     if(ans < dep)
     80         ans = dep;
     81 
     82     if(root == NULL)
     83         return ;
     84     depth(root->l,dep+1);
     85     depth(root->r,dep+1);
     86 }
     87 
     88 void leaf(N *root)
     89 {
     90     if(root == NULL)
     91         return ;
     92     if(root->l == NULL && root->r == NULL)
     93         ans++;
     94     leaf(root->l);
     95     leaf(root->r);
     96 }
     97 
     98 int main()
     99 {
    100     char s[51];
    101 
    102     N *root = creat();
    103 
    104     cin>>s;
    105 
    106     int i ,l;
    107 
    108     site = 0;
    109 
    110     insert(root,s);
    111 
    112     output1(root);
    113     cout<<endl;
    114     output2(root);
    115     cout<<endl;
    116 
    117     ans = 0;
    118 
    119     leaf(root);
    120 
    121     cout<<ans<<endl;
    122 
    123     ans = 0;
    124 
    125     depth(root,0);
    126 
    127     cout<<ans<<endl;
    128 
    129     return 0;
    130 }
  • 相关阅读:
    python测试开发django-1.开始hello world!
    python基础--杂项
    Python基础----函数
    python介绍
    公共Webservice
    divmod(a,b)函数
    模块知识
    第三周作业 修改配置文件
    rsync在windows和linux同步数据的配置过程
    docker学习笔记
  • 原文地址:https://www.cnblogs.com/zmx354/p/3161640.html
Copyright © 2011-2022 走看看