九度oj 题目1078:二叉树遍历
来源:互联网 发布:python逐行写入文件 编辑:程序博客网 时间:2024/04/29 11:18
- 题目描述:
二叉树的前序、中序、后序遍历的定义:
前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;
中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;
后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。
给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。
- 输入:
两个字符串,其长度n均小于等于26。
第一行为前序遍历,第二行为中序遍历。
二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。
- 输出:
输入样例可能有多组,对于每组测试样例,
输出一行,为后序遍历的字符串。
- 样例输入:
ABCBACFDXEAGXDEFAG
- 样例输出:
BCAXEDGAF
#include<iostream>#include<string>using namespace std;struct Node { Node *lchild; Node *rchild; char c;}node[50];int loc; //静态数组使用元素个数 Node *creat() { node[loc].lchild = node[loc].rchild = NULL; return &node[loc++];}void postOrder(Node *T) { if (T->lchild != NULL) postOrder(T->lchild); if (T->rchild != NULL) postOrder(T->rchild); cout << T->c;} string s1, s2;Node *build(int beg1, int end1, int beg2, int end2) { Node * ret = creat(); ret->c = s1[beg1]; int rootid; for (int i=beg2; i<=end2; ++i) //前序中序确定根 if (s2[i] == s1[beg1]) { rootid = i; break; } if (rootid != beg2) ret->lchild = build(beg1+1, rootid-beg2, beg2 ,rootid-1); if (rootid != end2) ret->rchild = build(beg1+rootid-beg2+1, beg1, rootid+1 ,end2); return ret;} int main (){ while (cin >> s1 >> s2) { loc = 0; Node *T = build(0, s1.size()-1, 0, s2.size()-1); postOrder(T); cout << endl; } return 0;}
0 0
- 九度oj 题目1078:二叉树遍历
- 【九度OJ】题目1078:二叉树遍历 解题报告
- 九度OJ题目1078:二叉树遍历
- 九度OJ题目1078:二叉树遍历
- 九度oj 二叉树遍历 题目1184
- 九度OJ 1078 二叉树遍历
- 九度OJ 1078 二叉树遍历
- 九度OJ-1078 二叉树遍历
- 九度oj-1078-二叉树遍历
- 九度OJ - 1078 - 二叉树遍历
- 九度OJ-1078-二叉树遍历
- 九度OJ 1078:二叉树遍历 (二叉树)
- 二叉树之由前序遍历和中序遍历求后序遍历——九度OJ题目1078:二叉树遍历
- 九度Oj题目1113:二叉树
- 九度OJ题目1113:二叉树
- 题目1113:二叉树 九度OJ
- 九度oj 1184 二叉树遍历
- 九度OJ - 1184 - 二叉树遍历
- 辗转相除法求两个数的最大公约数
- 索尼经典机型回顾
- Winform开发框架主界面设计展示
- 该如何加载google-analytics(或其他第三方)的JS
- 《爱情公寓》剧红角色红 演员总差一点点
- 九度oj 题目1078:二叉树遍历
- 程序后台执行总结
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
- 黑马程序员--C#基础学习笔记
- 《好歌曲》选手唱到杨坤大哭 刘欢大跌眼镜
- 索尼要廉价出售Vaio PC业务
- 列出所有git配置
- 骨灰门低功耗低功耗
- 内存_浅谈C++中内存泄漏的检测