百练2255:重建二叉树题解
来源:互联网 发布:javascript表单事件 编辑:程序博客网 时间:2024/06/14 13:31
2255:重建二叉树
- 查看
- 提交
- 统计
- 提示
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
给定一棵二叉树的前序遍历和中序遍历的结果,求其后序遍历。
- 输入
- 输入可能有多组,以EOF结束。
每组输入包含两个字符串,分别为树的前序遍历和中序遍历。每个字符串中只包含大写字母且互不重复。 - 输出
- 对于每组输入,用一行来输出它后序遍历结果。
- 样例输入
DBACEGF ABCDEFGBCAD CBAD
- 样例输出
ACBFGEDCDAB
- 提示
以英文题面为准
代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct Tree{ char val; Tree * left, * right; Tree(char v):val(v),left(NULL),right(NULL){} };char pre[30],in[30];void buildTree(Tree * &root, int s1,int len1,int s2){ if(len1 > 0){ root = new Tree(pre[s1]); int j = s2; while(in[j] != pre[s1]) j++; buildTree(root->left, s1 + 1, j - s2, s2); buildTree(root->right, s1+j-s2+1, len1 - j + s2 - 1, j + 1); }else{ root = NULL; return ; }}void postOrder(Tree * root){ if(root != NULL){ postOrder(root->left); postOrder(root->right); putchar(root->val); }}int main(){ while(~scanf("%s%s",pre,in)){ int len = strlen(pre); Tree * root; buildTree(root,0,len,0); postOrder(root); putchar('\n'); } return 0;}
阅读全文
0 0
- 百练2255:重建二叉树题解
- 2255:重建二叉树
- 剑指offer题解C++【4】重建二叉树
- 《剑指offer》牛客网java题解-重建二叉树
- poj 2255:重建二叉树
- 百练_2756:二叉树
- 百练4081:树的转换题解
- POJ 2255 经典的重建二叉树
- POJ 2255 二叉树的重建
- POJ 2255 Tree Recovery(二叉树重建)
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 有关powerdesinger中灰色数据无法修改的问题
- 小程序跳转带参数
- 【或 与 求和(二进制)】UVALive
- HDU 6070 Dirt Ratio (二分+线段树, 2017 Multi-Univ Training Contest 4)
- 向所有table中添加指定字段
- 百练2255:重建二叉树题解
- linux子系统的初始化_subsys_initcall():那些入口函数
- Openlayers3 轨迹回放, 解决linestring坐标显示不全
- shiro+redis实现session共享<1>
- vue自己创建思维
- jdom解析xml
- 10款专为设计师打造的热门工具清单
- 最长上升子序列(Longest Increasing Subsequence,LIS)
- java 发邮件