sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)

数据结构实验之二叉树的建立与遍历

Time Limit: 1000MS Memory limit: 65536K

题目描述

       已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。

 

输入

 输入一个长度小于50个字符的字符串。

输出

输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。

示例输入

abc,,de,g,,f,,,

示例输出

cbegdfa
cgefdba
3
5
复制代码
View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 typedef struct node
 5 {
 6     char c;
 7     struct node *l, *r;
 8 }tree;
 9 char str[1001];
10 int i;
11 tree *build()
12 {
13     tree *p;
14     if(str[i] == ',')
15     {
16         i ++;
17         return NULL;
18     }
19     p = (tree *)malloc(sizeof(tree));
20     p -> c = str[i];
21     i++;
22     p -> l = build();
23     p -> r = build();
24     return p;
25 }
26 void midsearch(tree *head)
27 {
28     if(head == NULL)
29     return ;
30     midsearch(head -> l);
31     printf("%c",head -> c);
32     midsearch(head -> r);
33 }
34 void lastsearch(tree *head)
35 {
36     if(head == NULL)
37     return ;
38     lastsearch(head -> l);
39     lastsearch(head -> r);
40     printf("%c",head -> c);
41 }
42 int leafs(tree *head)
43 {
44     if(head == NULL)
45     return 0;
46     if(head -> l == NULL && head -> r == NULL)
47     return 1;
48     else
49     return (leafs(head ->l) + leafs(head -> r));
50 }
51 int deep(tree *head)
52 {
53     int m, n;
54     if(head == NULL)
55     return 0;
56     m = deep(head -> l);
57     n = deep(head -> r);
58     if(m > n)
59     return m+1;
60     else
61     return n+1;
62 }
63 int main()
64 {
65     tree *head;
66     int leaf;
67     gets(str);
68     i=0;
69     head = build();
70     midsearch(head);
71     puts("");
72     lastsearch(head);
73     puts("");
74     leaf = leafs(head);
75     printf("%d\n",leaf);
76     printf("%d\n",deep(head));
77     return 0;
78 }
复制代码

 

posted @   琳&leen  阅读(314)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示