zoukankan      html  css  js  c++  java
  • 剑指offer-重建二叉树 java实现

    题目描述:

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

    代码实现:

    /**
     * Definition for binary tree
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
            if (pre.length==0 || in.length==0 || pre.length!=in.length){
                return null;
            }
            return ConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1);
        }
        public TreeNode ConstructBinaryTree(int[] pre,int ps,int pe,int[] in ,int is,int ie){
            int value;
            if (ps>pe){
                return null;
            }
            value = pre[ps];
            int index = is;
            while(in[index]!=value && index<=ie){
                index++;
            }
            TreeNode node = new TreeNode(0);
            node.val = value;
            //递归构造左子树
            node.left = ConstructBinaryTree(pre,ps+1,ps+index-is,in,is,index-1);
            //递归构造右子树
            node.right = ConstructBinaryTree(pre,ps+index-is+1,pe,in,index+1,ie);
            return node;
        }
    }

    备注:1.递归的使用,2.数组的界限

  • 相关阅读:
    jenkins+jmeter结合使用
    Bean的前身今世&处理器&Aware
    Spring的profile属性
    XML的验证模式
    org.springframework.beans包
    packge-info.java
    字节码解释执行引擎
    invokedynamic指令
    多态方法调用的解析和分派
    运行时栈帧结构
  • 原文地址:https://www.cnblogs.com/czwangzheng/p/8391748.html
Copyright © 2011-2022 走看看