博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)
阅读量:7280 次
发布时间:2019-06-30

本文共 1835 字,大约阅读时间需要 6 分钟。

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

Time Limit: 1000MS Memory limit: 65536K

题目描述

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

 

输入

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

输出

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

示例输入

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

示例输出

cbegdfacgefdba35
View Code
1 #include
2 #include
3 #include
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 else49 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 else61 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 }

 

转载于:https://www.cnblogs.com/wanglin2011/archive/2012/07/26/2609979.html

你可能感兴趣的文章
【Spring】- 接口代理、类代理
查看>>
Linux 磁盘分区工具 Parted
查看>>
Nginx出现413 Request Entity Too Large错误解决方法
查看>>
smarty---让smarty的初始化配置自动完成
查看>>
Ubuntu 11.10 创建桌面启动器
查看>>
tomcat报错:The server does not support version 3.0
查看>>
XML(4)——schema文件相互引用
查看>>
Linux如何查找文件及其安装路径
查看>>
以后深究。。
查看>>
细说五层网站架构
查看>>
我的友情链接
查看>>
拿nslookup查DNS信息
查看>>
在ACL下DHCP无法获得IP的解决方法
查看>>
通过dbcc page来查看SQL Server表中的数据
查看>>
给linux杀杀毒吧
查看>>
nginx worker进程最大打开文件数
查看>>
windows10序列号
查看>>
进程间的通信---信号量(semget,semctl,semop)
查看>>
基于大数据技术之电视收视率企业项目实战(hadoop+Spark)
查看>>
Java开发环境的搭建(windows)
查看>>