java实现——006重建二叉树】的更多相关文章

public class T006 { public static void main(String[] args){ int pre[] = {1,2,4,7,3,5,6,8}; int in[] = {4,7,2,1,5,3,8,6}; preorderTraversalRec(construct(pre,in,8)); } public static void preorderTraversalRec(TreeNode root) { if (root == null) { return;…
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 题目代码 /** * Created by YuKai Fan on 2018/8/17. */ public class ReBuildTreeNode { public static void main(String[] args) { ReBui…
注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 package com.xsf.SordForOffer; import java.util.Arrays; /*剑指offer第6个问题 根据前序和中序遍历来重建二叉树 */ class BinaryTreeNode { public int value; public BinaryTreeNode leftNode; public Bi…
题目:重建二叉树 考点:树 题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 法一:递归法1,比较简洁易懂 import java.util.*; /** * Definition for binary tree * public class TreeNode { * int val; * TreeN…
本文参考自<剑指offer>一书,代码采用Java语言.  更多:<剑指Offer>Java实现合集 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6},则重建出其二叉树并输出它的头结点. 思路 前序遍历第一个值就是根结点的值,根据该值在中序遍历的位置,可以轻松找出该根结点左右子树的前序…
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 分析: 根据二叉树的前序和中序遍历,重建二叉树. 我们知道: 前序遍历:根节点,左子树,右子树. 中序遍历:左子树,根节点,右子树. 后序遍历:左子树,右子树,根节点. 可以发现,前序遍历的第一个数便是整个数的根节点,而这个数在中序遍历中,又将数组分成两…
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出二叉树并输出他的根节点. 在二叉树的前序遍历中,第一个数字总是树的根节点.在中序遍历中,树的根节点在序列的中间,左子树的节点的值位于根节点的左边,右子树节点的值位于根节点值的右边. 因此需要扫描中序遍历序列才能找到很结点的值,由此可以找到左子树的节点的个数和右子树节点的…
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 解题所需的知识 二叉树的遍历 ​ 这个先中后,是根据何时遍历根节点命名的,左的优先级大于后,比如先序就先遍历根结点,再遍历左节点,最后遍历右节点,中序同理,先左中根最后右,后序,先左再右后根. 二叉树的先序遍历 ​ 来! 根据上面的的顺序我们来走一遍,先根…
重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回.   思路:前序遍历:中左右,中序遍历:左中右. 则易知前序序列中第一个值为根节点root, 1,遍历中序遍历找到在中序序列中的root的索引,则root左边的序列为左子树的中序遍历结果,root右边的序列为右子树的中序遍历结果. 2,由第…
GitHub上的代码链接 /** * @Author: DaleyZou * @Description: 重建二叉树 * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. * 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. * 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. * @Date: Created in 7:58 2019/1/29 * @Modified By: */ public cla…