题目描述

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

思路

回顾三种经典的遍历:来自邓俊辉的数据结构dscpp-3rd-第五章二叉树。

VLR

LRV

LVR

很简单,递归即可。

注意递归出口和二叉树索引的边界。

/*** Definition for binary tree* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:TreeNode* build(vector<int> pre, int p_left, int p_right, vector<int> vin, int v_left, int v_right){if(p_left > p_right || v_left > v_right) return nullptr;TreeNode* root = new TreeNode(pre[p_left]);//建立rootfor(int i=v_left; i<=v_right; i++){if(vin[i] == root->val){root->left = build(pre, p_left+1, p_left+i-v_left, vin, v_left, i-1);//建立左子树root->right = build(pre, p_left+i-v_left+1, p_right, vin, i+1, v_right);break;}}return root;}TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {return build(pre, 0, pre.size()-1, vin, 0, vin.size()-1);}
};

二叉树的建立与遍历_51、二叉树遍历-重建二叉树JZ4相关推荐

  1. 线索二叉树(前中后序线索化/遍历/画线索)

    线索二叉树 文章目录 线索二叉树 1 线索二叉树的基本概念 2 线索二叉树的构造 2.1 线索二叉树的存储结构 2.2 给线索二叉树画线索 2.2.1 中序 2.2.2 先序 2.2.3 后序 2.3 ...

  2. 软件学院天梯赛参赛队员第一次训练 L2-1 红豆生南国 (25 分)(完全二叉树,树的遍历,重建二叉树,DFS)

    题目: 有诗云: 相思 (王维 唐)红豆生南国, 春来发几枝.愿君多采撷, 此物最相思. 那么,我们来采红豆吧! 假设红豆树是这个样子的: 这种红豆树的特点是: 每个结点都有一个正整数编号,标在结点内 ...

  3. 十七、二叉树的建立与基本操作

    十七.二叉树的建立与基本操作 文章目录 十七.二叉树的建立与基本操作 题目描述 解题思路 上机代码 一点建议 题目描述 编写程序实现二叉树的如下操作: 建立二叉链表 二叉树的先序.中序.后序遍历 求二 ...

  4. 手把手教你如何重建二叉树(超精彩配图)

    文章目录 一.二叉树的重建 (一)面试题07. 重建二叉树 (二)分析该题目 (三)java代码实现 (四)IDEA调试代码,详细查看构建的过程 (五)附Arrays.copyOfRange()的用法 ...

  5. 【算法专题】重建二叉树

    重建二叉树总结 概述 重建二叉树分为三种类型: (1)中序遍历+前序遍历/后序遍历 重建二叉树: (2)中序遍历+层序遍历 重建二叉树: (3)前序遍历+给定叶节点 重建二叉树. 下面分别给出这三类重 ...

  6. 二叉树的建立和遍历程序代码(Java,C)

    C语言 考虑到c语言的scanf("%c",&c)是输入后一个字符一个字符的取出这一特性,我们选择用createBiTree()方法接受输入的参数,然后直接建立.运用递归的 ...

  7. 二叉树的建立和遍历的各种问题

    链表声明: //基本结构声明 #include<iostream> #include<queue> #include<stack> #include<cstd ...

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

    Problem Description 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点).请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树 ...

  9. 二叉树的建立与遍历(先中后层序)

    在做一些算法题时,我会经常用到VS2017去测试,每次去找一个合适的二叉树觉得很麻烦,今天就自己写了一个放在博客上,下次就直接复制了 包含二叉树的建立,以及二叉树的前序遍历.中序遍历.后序遍历和层序遍 ...

最新文章

  1. 【数字信号处理】相关函数 ( 能量信号 | 能量信号的互相关函数 | 能量信号的自相关函数 )
  2. 搭建K8s集群(kubeadm方式)-操作系统初始化
  3. spring实现IOC的思路和方法
  4. GraphQL:从头开始
  5. 欢乐纪中某A组赛【2019.7.9】
  6. [ BZOJ 4668 ] 冷战
  7. VsDoc for jQuery
  8. 湘潭大学计算机科学,湘潭大学计算机科学和技术一级学科.doc
  9. python 个人项目_软工个人项目WC(Python实现)
  10. Label高度根据内容变化SnapKi
  11. WIN7镜像中增加USB3.0驱动和语言包
  12. 如何将swf文件转换成pdf
  13. 想知道程序员每天在干嘛吗?
  14. 0/0型极限等于多少_两个重要极限的一点理解(下)
  15. 使用计算机研究生命科学的文章,现代若干科学前沿的计算主义哲学蕴意.doc
  16. 【C#进阶四】详细总结C#中的文件和I/O流之文件和目录(File 、 FileInfo、Directory、DirectoryInfo和Path)
  17. 10秒钟解决TeamViewer商业用途 、5分钟后终止等问题
  18. HDU 5405 (树链剖分+线段树)
  19. JeecgBoot 2.0.2 版本发布,基于SpringBoot快速开发平台
  20. oracle 数据字典画报,oracle privilege不得不说的11一个数据字典视图

热门文章

  1. 『C#基础』调用CMD的一个小工具
  2. cmd使用另一个Oracle的sid,(转发备用)Oracle SID在本机上已经存在,请指定一个不同的SID”的解决办法...
  3. 嵌入式软件工程师2021面试指南【转】
  4. 由C过渡到C++-入门知识点
  5. 全国计算机等级考试题库二级C操作题100套(第12套)
  6. python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)
  7. Mybatis中@Param的用法和作用
  8. api zabbix 拓扑图 获取_zabbix网络拓扑图配置-Maps(示例代码)
  9. Linux文件编程(2)
  10. 西里尔字符_如何设计西里尔字母Њ(Nje),Љ(Lje),Ћ(Tshe)和Ђ(Dje)