需要注意两点:1、对于前序遍历第一个即为根节点。2、在前序遍历找到根节点之后,在中序遍历中根节点之前的全部为根节点的左子树,后面的全部为右子树。所以可以根据中序遍历中根节点之前的数量,在前序遍历中找出左子树。3、递归实现就可以。

TreeNode* reConstructBinaryTree(vector<int> pre, vector<int> vin)
{int len = pre.size();if (len == 0)return NULL;vector<int>pre_left, pre_right, in_left, in_right;int temp = pre[0];int root = 0;TreeNode* head = (TreeNode*)malloc(sizeof(TreeNode));head->val = pre[0];for (int i = 0; i < len; i++){if (temp == vin[i]){root = i;break;}}for (int j = 0; j < root; j++){pre_left.push_back(pre[j + 1]);in_left.push_back(vin[j]);}for (int j = root + 1; j < len; j++){pre_right.push_back(pre[j]);in_right.push_back(vin[j]);}head->left = reConstructBinaryTree(pre_left, in_left);head->right = reConstructBinaryTree(pre_right, in_right);return head;
}

剑指-利用树的前序遍历和中序遍历结果,输出树的原始结构相关推荐

  1. c++ 删除二叉树的子树_数据结构—树|二叉树|前序遍历、中序遍历、后序遍历【图解实现】...

    点击蓝字关注我们 AI研习图书馆,发现不一样的精彩世界 数据 结构 二叉树的遍历 一.树 在谈二叉树的知识点之前,我们首先来看一下树和图的基本概念.树:不包含回路的连通无向图,树是一种简单的非线性结构 ...

  2. 树的前序遍历、中序遍历、后序遍历详解

    1.前序遍历 对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子.以上图为例,递归的过程如下: (1):输出 1,接着左孩子: (2):输出 2,接着左孩子: (3):输出 4,左孩子 ...

  3. pat根据中序遍历和先序遍历_[leetcode/lintcode 题解] 前序遍历和中序遍历树构造二叉树...

    [题目描述] 根据前序遍历和中序遍历树构造二叉树. 在线评测地址: 九章算法 - 帮助更多中国人找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧​www.jiuzhang.com [样例 ...

  4. 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列

    [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 文章目录 [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 package offer;public cl ...

  5. 关于树的前序遍历,中序遍历,后序遍历的相互转化(含代码实现)

    2019独角兽企业重金招聘Python工程师标准>>> 首先我们需要了解的是前序遍历.中序遍历.后序遍历的概念. 前序遍历: 1.首先访问根节点 2.然后遍历左子树 3.最后遍历右子 ...

  6. LintCode-73.前序遍历和中序遍历树构造二叉树

    前序遍历和中序遍历树构造二叉树 根据前序遍历和中序遍历树构造二叉树. 注意事项 你可以假设树中不存在相同数值的节点 样例 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 ...

  7. 剑指offer之二叉搜索树的后序遍历序列

    剑指offer之二叉搜索树的后序遍历序列 欢迎关注作者博客 简书传送门 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个 ...

  8. 剑指 Offer 33. 二叉搜索树的后序遍历序列

    剑指 Offer 33. 二叉搜索树的后序遍历序列 原始题目链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian- ...

  9. 二叉树的前序遍历、中序遍历、后序遍历

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 为什么需要树这种数据结构 树的常用术语 二叉树的概念 二叉树遍历的说明 实现二叉树 实现二叉树的遍历 二叉树查找结点 二叉树 ...

  10. 根据二叉树前序遍历和中序遍历重建二叉树

    剑指 Offer 07. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出 前序遍历 preorder = [3, ...

最新文章

  1. Android RecyclerView(和SnapHelper) 实现类似ViewPager的效果
  2. 【Servlet】response对象给用户返回数据
  3. BZOJ 3564 信号增幅仪
  4. 信息学奥赛一本通(1161:转进制)
  5. 22.Linux-块设备驱动之框架详细分析(详解)
  6. 第三季-第26课-网络并发服务器设计
  7. ‘’vr‘’全景抓鸡游戏总结
  8. 诱人的 TypeScript 视频教程(69 个视频)
  9. 颜色转换助手RGB888-565
  10. maven完全离线开发【解决jar包自动从网络下载导致打包失败】
  11. 记录vue预渲染prerender-spa-plugin踏坑
  12. 开关二极管的作用是什么
  13. 蚂蚁金服的to B开放
  14. Qt Creator 添加基于 JSON 的向导
  15. 网赚APP的“俄罗斯套娃”游戏
  16. linux无法打开或写入文件格式,Centos系统下“无法打开并写入文件”问题的解决...
  17. 技嘉Z68升级UEFI BIOS后要注意的事项
  18. 自考基础会计学可以带计算机吗,自考《基础会计学》怎么过?
  19. 分享我自学前端的一些学习网站
  20. 智能驾驶领域专业术语

热门文章

  1. J2SE核心开发实战(一)——认识J2SE
  2. stm32数据手册boot_STM32的ISP下载的原理是什么呢?
  3. 数据类型转换_自动转换
  4. 基于XML的AOP实现事务控制
  5. Ribbon-3使用配置文件自定义Ribbon Client
  6. Redis分布式锁原理解析
  7. 使用RAID增加传统机器硬盘的性能
  8. java.lang.unsatisfiedlinkerror:_java.lang.UnsatisfiedLinkError: 的问题
  9. 测试原理_OTDR测试原理及注意事项
  10. python 输出一个 5*5的 三角形_GitHub标星3W+,80个Python案例,带你轻松玩转Python学习!...