sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)
数据结构实验之二叉树的建立与遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
输入
输入一个长度小于50个字符的字符串。
输出
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
示例输入
abc,,de,g,,f,,,
示例输出
cbegdfa cgefdba 3 5

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 }
分类:
树
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单