数据结构实验之二叉树的建立与遍历
2014-09-24 17:38
204 查看
数据结构实验之二叉树的建立与遍历 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。 输入 输入一个长度小于50个字符的字符串。 输出 输出共有4行: 第1行输出中序遍历序列; 第2行输出后序遍历序列; 第3行输出叶子节点个数; 第4行输出二叉树深度。 示例输入 abc,,de,g,,f,,, 示例输出 cbegdfa cgefdba 3 5
#include <cstring> #include <cstdlib> #include <cstdio> using namespace std; struct node { char date; node *l, *r; }; node *build(node *p) { char x; cin >> x; if (x == ',') { p = NULL; } else { p = new(node); p->date = x; p->l = build(p->l); p->r = build(p->r); } return p; } void mid(node *p) { if (p != NULL) { mid(p->l); cout << p->date; mid(p->r); } } void last(node *p) { if (p != NULL) { last(p->l); last(p->r); cout << p->date; } } int sum = 0; void yezi(node *p) { if (p != NULL) { if (p->l == NULL&&p->r == NULL) { sum++; } else { yezi(p->l); yezi(p->r); } } } int shen = 0; int shendu(node *p) { if (p != NULL) { int l1 = shendu(p->l); int r1 = shendu(p->r); if (l1 > r1) return l1 + 1; else return r1 + 1; } return 0; } int main() { node *tree = NULL; sum = 0; tree = build(tree); mid(tree); cout << endl; last(tree); cout << endl; yezi(tree); cout << sum << endl; int shen=shendu(tree); cout << shen << endl; return 0; }
相关文章推荐
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历 ( sdut oj2136)
- 数据结构实验之二叉树的建立与遍历
- SDUT-2136数据结构实验之二叉树的建立与遍历
- sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)
- 【数据结构实验】二叉树的建立以及遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之 二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 【二叉树的建立和遍历】SDUTOJ 2136---数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历