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

来源:互联网 发布:螺纹钢的算法 编辑:程序博客网 时间:2024/05/21 18:35
数据结构实验之二叉树的建立与遍历Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^题目描述       已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。 输入 输入一个长度小于50个字符的字符串。输出输出共有4行:第1行输出中序遍历序列;第2行输出后序遍历序列;第3行输出叶子节点个数;第4行输出二叉树深度。示例输入abc,,de,g,,f,,,示例输出cbegdfacgefdba35
#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;elsereturn 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;}


0 0
原创粉丝点击