二叉树的建立与遍历_51、二叉树遍历-重建二叉树JZ4
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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 线索二叉树的基本概念 2 线索二叉树的构造 2.1 线索二叉树的存储结构 2.2 给线索二叉树画线索 2.2.1 中序 2.2.2 先序 2.2.3 后序 2.3 ...
- 软件学院天梯赛参赛队员第一次训练 L2-1 红豆生南国 (25 分)(完全二叉树,树的遍历,重建二叉树,DFS)
题目: 有诗云: 相思 (王维 唐)红豆生南国, 春来发几枝.愿君多采撷, 此物最相思. 那么,我们来采红豆吧! 假设红豆树是这个样子的: 这种红豆树的特点是: 每个结点都有一个正整数编号,标在结点内 ...
- 十七、二叉树的建立与基本操作
十七.二叉树的建立与基本操作 文章目录 十七.二叉树的建立与基本操作 题目描述 解题思路 上机代码 一点建议 题目描述 编写程序实现二叉树的如下操作: 建立二叉链表 二叉树的先序.中序.后序遍历 求二 ...
- 手把手教你如何重建二叉树(超精彩配图)
文章目录 一.二叉树的重建 (一)面试题07. 重建二叉树 (二)分析该题目 (三)java代码实现 (四)IDEA调试代码,详细查看构建的过程 (五)附Arrays.copyOfRange()的用法 ...
- 【算法专题】重建二叉树
重建二叉树总结 概述 重建二叉树分为三种类型: (1)中序遍历+前序遍历/后序遍历 重建二叉树: (2)中序遍历+层序遍历 重建二叉树: (3)前序遍历+给定叶节点 重建二叉树. 下面分别给出这三类重 ...
- 二叉树的建立和遍历程序代码(Java,C)
C语言 考虑到c语言的scanf("%c",&c)是输入后一个字符一个字符的取出这一特性,我们选择用createBiTree()方法接受输入的参数,然后直接建立.运用递归的 ...
- 二叉树的建立和遍历的各种问题
链表声明: //基本结构声明 #include<iostream> #include<queue> #include<stack> #include<cstd ...
- sdut 2136 数据结构实验之二叉树的建立与遍历
Problem Description 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点).请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树 ...
- 二叉树的建立与遍历(先中后层序)
在做一些算法题时,我会经常用到VS2017去测试,每次去找一个合适的二叉树觉得很麻烦,今天就自己写了一个放在博客上,下次就直接复制了 包含二叉树的建立,以及二叉树的前序遍历.中序遍历.后序遍历和层序遍 ...
最新文章
- 【数字信号处理】相关函数 ( 能量信号 | 能量信号的互相关函数 | 能量信号的自相关函数 )
- 搭建K8s集群(kubeadm方式)-操作系统初始化
- spring实现IOC的思路和方法
- GraphQL:从头开始
- 欢乐纪中某A组赛【2019.7.9】
- [ BZOJ 4668 ] 冷战
- VsDoc for jQuery
- 湘潭大学计算机科学,湘潭大学计算机科学和技术一级学科.doc
- python 个人项目_软工个人项目WC(Python实现)
- Label高度根据内容变化SnapKi
- WIN7镜像中增加USB3.0驱动和语言包
- 如何将swf文件转换成pdf
- 想知道程序员每天在干嘛吗?
- 0/0型极限等于多少_两个重要极限的一点理解(下)
- 使用计算机研究生命科学的文章,现代若干科学前沿的计算主义哲学蕴意.doc
- 【C#进阶四】详细总结C#中的文件和I/O流之文件和目录(File 、 FileInfo、Directory、DirectoryInfo和Path)
- 10秒钟解决TeamViewer商业用途 、5分钟后终止等问题
- HDU 5405 (树链剖分+线段树)
- JeecgBoot 2.0.2 版本发布,基于SpringBoot快速开发平台
- oracle 数据字典画报,oracle privilege不得不说的11一个数据字典视图
热门文章
- 『C#基础』调用CMD的一个小工具
- cmd使用另一个Oracle的sid,(转发备用)Oracle SID在本机上已经存在,请指定一个不同的SID”的解决办法...
- 嵌入式软件工程师2021面试指南【转】
- 由C过渡到C++-入门知识点
- 全国计算机等级考试题库二级C操作题100套(第12套)
- python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)
- Mybatis中@Param的用法和作用
- api zabbix 拓扑图 获取_zabbix网络拓扑图配置-Maps(示例代码)
- Linux文件编程(2)
- 西里尔字符_如何设计西里尔字母Њ(Nje),Љ(Lje),Ћ(Tshe)和Ђ(Dje)