数据结构实验之二叉树的建立与遍历
来源:互联网 发布:ps软件中文免费下载 编辑:程序博客网 时间:2024/06/01 08:47
Problem Description
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
Input
输入一个长度小于50个字符的字符串。
Output
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
Example Input
abc,,de,g,,f,,,
Example Output
cbegdfa
cgefdba
3
5
#include <iostream>using namespace std;typedef struct BiTNode{ char ch; struct BiTNode *lchild; struct BiTNode *rchild;}BiTNode,*BiTree;char s[55];int i = 0, count1 = 0;BiTree PirorTravel(char *s){//return root BiTree T; if(s[i]==','){ i++; return NULL; } else{ T = new BiTNode; T->ch = s[i++]; //cout<<T->ch<<endl; T->lchild = PirorTravel(s);//build leftchild T->rchild = PirorTravel(s); } return T;}void InOrderTravel(BiTree T){ if(T){ InOrderTravel(T->lchild); cout<<T->ch; InOrderTravel(T->rchild); }}void EndTravel(BiTree T){ if(T){ EndTravel(T->lchild); EndTravel(T->rchild); cout<<T->ch; }}void Leave(BiTree T){ if(T==NULL) return; else{ Leave(T->lchild); if(T->lchild==NULL&&T->rchild==NULL) count1++; Leave(T->rchild); }}int Depth(BiTree T){ if(T==NULL) return 0; else{ int m = Depth(T->lchild); int n = Depth(T->rchild); if(m>n) return ++m; else return ++n; }}int main(){ cin>>s; BiTree T; T = PirorTravel(s); InOrderTravel(T); cout<<endl; EndTravel(T); cout<<endl; Leave(T); cout<<count1; cout<<endl; cout<<Depth(T); return 0;}
阅读全文
0 0
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- sdutoj2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历 SDUT
- ORACLE 自动备份并还原数据库
- 什么是 J2SE?
- webview
- 自定义的medialay+surface seekbar拖动不灵敏的问题
- C#中委托为什么类型安全
- 数据结构实验之二叉树的建立与遍历
- java中String、StringBuffer、StringBuilder的区别
- 单例和多例的区别
- 反射
- AngularJs+bootstrap(前台购物车)
- 深入学习main()和UIApplication
- uefi模式下重装系统
- Electron入门笔记
- 网络协议之路由交换篇--OSPF协议