数据结构实验之二叉树的建立与遍历(万能了,水)
2017-08-07 17:17
381 查看
数据结构实验之二叉树的建立与遍历
Time Limit: 1000MS Memory Limit: 65536KB[align=center]Submit Statistic[/align]
Problem Description
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。Input
输入一个长度小于50个字符的字符串。Output
输出共有4行:第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
Example Input
abc,,de,g,,f,,,
Example Output
cbegdfacgefdba35
Hint
Author
ma6174水题
#include <bits/stdc++.h> using namespace std; struct Btree { char data; struct Btree *lc,*rc; }; char st[10010]; int ans; int cnt; struct Btree* creat() { struct Btree *root; if(st[++ans] == ',') { root = NULL; } else { root = new Btree; root -> data = st[ans]; root -> lc = creat(); root -> rc = creat(); } return root; }; void LDR(struct Btree * root) { if(root) { LDR(root -> lc); cout<<root ->data; LDR(root -> rc); //if(!root -> lc && !root -> rc) // cnt++; } } void LRD(struct Btree *root) { if(root) { LRD(root -> lc); LRD(root -> rc); cout<<root->data; } } int depth(struct Btree *root)//递归求树的深度 { if(root == NULL) return 0; else { int m = depth(root -> lc); int n = depth(root -> rc); return (m > n)?(m+1):(n+1); } } //再加上个层序遍历,基本全了 void cengxu(struct Btree * root)//以层序遍历的方式,寻找叶子节点 { queue<Btree*>q; if(root) q.push(root); Btree *qq; while(!q.empty()) { qq = q.front(); q.pop(); if(qq -> lc) q.push(qq->lc); if(qq -> rc) q.push(qq->rc); if(!qq->lc && !qq->rc)//左右子节点都为空,即为叶子节点 cnt++; } } int main() { while(cin>>st) { ans = -1; cnt = 0; struct Btree *root; root = creat(); LDR(root); cout<<endl; LRD(root); cout<<endl; cengxu(root); cout<<cnt<<endl; int deep = depth(root); cout<<deep<<endl; } return 0; }
相关文章推荐
- 2136数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 【二叉树的建立和遍历】SDUTOJ 2136---数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- sdut 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历oj
- 数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历 ( sdut oj2136)
- 数据结构实验之 二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历