题目大意:给定二叉树先序和中序遍历,输出二叉树后序遍历。

方法:将英文字母映射为数字,利用数组存储,先序第一个节点是父节点,然后再从中序遍历中找到位置。注意边界。代码也很简单一次ac。

#include<iostream>
#include <string>
#include <string.h>
using namespace std;
string preorder,inorder;
int lefttree[1000], righttree[1000];
int build(int preleft,int preright,int inleft,int inright) {if (preleft> preright)return -1;int index = inorder.find(preorder[preleft],inleft);int l1 = index - inleft;int r1 = inright - index;lefttree[preorder[preleft] - 'A']=build( preleft + 1, preleft + l1, inleft, index - 1);righttree[preorder[preleft] - 'A']=build( preleft + l1 + 1, preleft + l1 + r1, index+1, inright);return preorder[preleft]-'A';
}
void printTree(int root) {if (root == -1)return;printTree(lefttree[root]);printTree(righttree[root]);cout << (char)(root + 'A');
}
int main()
{
while (cin >> preorder && cin >> inorder) {memset(righttree, -1, sizeof(righttree));memset(lefttree, -1, sizeof(lefttree));build(0, preorder.length()-1, 0, preorder.length()-1);printTree(preorder[0]-'A');cout << endl;
}return 0;
}

Uva536 Tree Recovery二叉树重建(先序和中序确定二叉树,后序输出)相关推荐

  1. PAT甲级1086 Tree Traversals Again:[C++题解]二叉树中序序列、栈、求后序遍历

    文章目录 题目分析 题目链接 题目分析 分析: 给定栈模拟的二叉树的中序序列. 我们可以发现一些性质: 1 第一个值是根结点. 2 对于所有的push操作,如果上一个是push,该结点就是上一个结点的 ...

  2. 二叉树的中序遍历,前序遍历,后序遍历

    前序遍历:按照访问根节点-->左子树-->右子树的方式遍历这棵树,而在访问左子树或者右子树的时候,我们按照同样的方式遍历,直到遍历完整棵树. 中序遍历:按照访问左子树-->根节点-- ...

  3. “中序表达式”转换为“前序表达式”、“后序表达式”

    上周末参照书本写了个"计算器"的程序,其中最令我费解的就是"前序表达式"."后续表达式",好像记得老师在上课的时候讲过,估计当时也没听懂,看 ...

  4. 【二叉树】二叉树的遍历规则(前序遍历、后序遍历、中序遍历)|前/后/中缀表达式...

    转自:https://www.cnblogs.com/turnips/p/5096578.html 今天看了一些关于平和查找二叉树的问题,顺便也复习了一下二叉树的遍历规则,写一下学习文档. 树的遍历顺 ...

  5. Tree Recovery(二叉树递归遍历+求后序遍历模板)

    题意:已知先序和中序,将后序求出来 Little Valentine liked playing with binary trees very much. Her favorite game was ...

  6. 先序中序后序两两结合重建二叉树

    遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次.由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转 ...

  7. [LeetCode] Binary Tree Postorder Traversal 二叉树的后序遍历

    Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...

  8. 建立二叉树:已知层次遍历顺序建立二叉树、已知先序遍历顺序建立二叉树

    其他二叉树知识!二叉树知识汇总 目录 前提知识: 约定: 二叉树节点的存储结构: 创建一个节点: 建立二叉树的几种方法: 一.已知先序遍历顺序,构建二叉树.(链式存储) 二.已知层次遍历顺序,构建二叉 ...

  9. 二叉树(C++):创建,前中后序遍历(递归+非递归),获取叶子节点个数,获取树的高度

    文章目录 前言 创建二叉树 先序遍历 中序遍历 后序遍历 获取叶子节点个数 获取树的高度 测试代码 前言 现有如下二叉树: 关于二叉树的相关操作,我们能够发现二叉树从根节点到子节点,以及每个中间节点基 ...

最新文章

  1. 好书征集第2弹 | 你pick哪本人工智能好书
  2. Ubuntu 15.04 安装 boost-python
  3. 开源的SIP协议栈 PJSIP
  4. python中列表 字典 元祖 enumerate()函数
  5. ubuntu 16.04 apache 开启Rewrite功能
  6. 2015计算机类专业课类试卷,2015计算机专业知识试题.doc
  7. 【版本更新】CAD组件Aspose.CAD 9月新版V17.9发布 | 支持IFC格式
  8. Spring面试基础题
  9. 巨龙拉冬:让你的Cobalt Strike变成超级武器
  10. 使用pm2管理项目(指令)
  11. 世界上最成功的 10 位 Logo 设计师
  12. 美团因拖欠骑手工资被约谈;传苹果6月6日举办全球开发者大会;Linux 5.18开始启动停止支持ReiserFS|极客头条
  13. c# propertyGrid下拉选项
  14. 【矩阵论】线性空间与线性变换(6)
  15. 藏宝阁显示角色可买服务器,梦幻西游藏宝阁里面买角色时选的可转入服务器是不是一定可以转...
  16. 关于linux的考试题
  17. 1秒消失 alert jquery_jquery 弹窗信息显示几秒后自动消失
  18. SCTF-Misc400B
  19. 你的圈子,已经暴露了你的阶层
  20. Python——pandas模块—Series数据结构

热门文章

  1. Nginx限流-速率实现
  2. springboot 切换日志实现
  3. SpringIOC容器介绍
  4. MybatisPlus入门之介绍
  5. html2canvas截图页面中某块区域的图不全_截图操作千千万,唯舒适最重要!你更Pick谁?...
  6. _Linux 的文件系统及文件缓存知识点整理
  7. python 输出一个 5*5的 三角形_GitHub标星3W+,80个Python案例,带你轻松玩转Python学习!...
  8. 二:unittest框架配合selenium之xpath定位
  9. ASP.NET Core MVC 模型绑定用法及原理
  10. centos 安装PHP7并且与其他版本共存并且为PHP7安装redis扩展