剑指offer 面试题7.重建二叉树

0、题目描述

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果都不包含重复的数字。

1、解法

1)由前序遍历的第一个节点可以得到该树的根节点R。

2)在中序遍历中找到该根节点R,R节点可将中序遍历的序列分成左子树和右子树。

3)将左子树和右子树作为新的子树并重复1)

原文地址:https://www.cnblogs.com/Justdocument/p/12394777.html

时间: 2024-10-10 01:58:05

剑指offer 面试题7.重建二叉树的相关文章

【剑指offer】Q6:重建二叉树

class BTNode: def __init__(self, val): self.left = None self.right = None self.val = val ''' @ construct tree by inorder & preorder ''' def constructByInPre(inorder, instart, inend, preorder, prestart, preend): if inend < instart or preend < pre

[ 剑指offer ] 面试题8:二叉树的下一个节点

题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 解题思路 1.找到所有的可能情况并归纳,写的代码需要把这些情况都覆盖到. 2.具体情况详见书本# -*- coding:utf-8 -*- # class TreeLinkNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # self

剑指offer系列源码-重建二叉树

oj地址 </pre><p><pre name="code" class="html">题目1385:重建二叉树 时间限制:1 秒内存限制:32 兆特殊判题:否提交:3609解决:1091 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输

剑指offer(三十三)之重建二叉树

题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 代码: <span style="font-size:18px;">/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode

【剑指Offer】4、重建二叉树

??题目描述: ??输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回根结点. ??解题思路: ??树的遍历有三种:分别是前序遍历.中序遍历.后序遍历.本题是根据前序和中序遍历序列重建二叉树,我们可以通过一个具体的实例来发现规律,不难发现:前序遍历序列的第一个数字就是树的根结点.在中序遍历序列中,可以扫描找到根结点

【剑指Offer】04、重建二叉树

题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 题解:递归 1 public static TreeNode reConstructBinaryTree(int[] pre,int[] in) { 2 if(pre.length==0||in.length==0){ 3 return null; 4

【剑指offer】7、重建二叉树

题目 给出二叉树的前序遍历与中序遍历结果,重建该二叉树. 思路 由于前序遍历的第一个数字是根节点,将中序遍历分为左右子树两个部分.接下来就递归,将左子树和右子树的序列分离出来,然后调用递归函数. TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) { int length = pre.size() - 1; TreeNode* root = ConstructCore(pre, 0, length , v

二叉树层次遍历(剑指Offer面试题32:从上到下打印二叉树)

图1所示为二叉树的层次遍历,即按照箭头所指方向,按照1.2.3的层次顺序,对二叉树每个节点进行访问 (此图反映的是自左至右的层次遍历,自右至左的方式类似). 要进行层次遍历,需要建立一个队列.先将二叉树头节点入队列,然后出队列,访问该节点, 如果它有左子树,则将左子树的根结点入队:如果它有右子树,则将右子树的根结点入队.然后出队列,对出队节点访问, 如此反复直到队列为空为止. 1 import java.util.*; 2 class TreeNode 3 { 4 int val; 5 Tree

【剑指Offer面试题】二维数组中的查找

下决心AC所有剑指offer面试题. 九度OJ面试题地址:http://ac.jobdu.com/hhtproblems.php 书籍:何海涛--<剑指Offer:名企面试官精讲典型编程题> 对于面试题,面试官往往更希望我们能提出优化方法,这样更能体现我们的思维能力以及传说中的"内功".所以做剑指offer要着重训练这方面,多总结多细究,总是有好处的.加油~ 二维数组中的查找 时间限制:1 秒内存限制:32 兆 特殊判题:否提交:19005解决:3642 题目描述: 在一个