题解 | #重建二叉树#

重建二叉树

http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
import java.util.*;
public class Solution {
    public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {

        //没什么好说的,参照评论区1楼大佬的代码,递归一定要注意return!!!
        if(pre.length==0){
            return null;
        }
         //找到root节点,
        int rootVal = pre[0];

         if(pre.length==1){
            return new TreeNode(rootVal);
        }

        TreeNode root = new TreeNode(rootVal);
        //确定左子树和右子树的位置
        int rootIndex = 0;

        for(int i=0;i<vin.length;i++){
            if(rootVal == vin[i]){
                rootIndex = i;
                break;
            }
        }

        //递归,假设root的左右子树已经构建完毕,将左右子树放到root左右即可
        root.left = reConstructBinaryTree(Arrays.copyOfRange(pre,1,rootIndex+1),Arrays.copyOfRange(vin,0,rootIndex));
        root.right = reConstructBinaryTree(Arrays.copyOfRange(pre,rootIndex+1,pre.length),Arrays.copyOfRange(vin,rootIndex+1,vin.length));
        return root;

    }
}
全部评论

相关推荐

头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务