LeetCode每日一题:剑指 Offer 07. 重建二叉树

2020-08-17  本文已影响0人  Patarw

题目分析:

递归解析:

  class Solution {
int rootIndex = 0;
public TreeNode buildTree(int[] preorder, int[] inorder) {
    if(preorder.length == 0){
        return null;
    }
    TreeNode head = new TreeNode(0);
    return build(preorder,inorder,0,inorder.length-1,head);
}

public TreeNode build(int[] preorder,int[] inorder,int left,int right,TreeNode head){
    
    head = new TreeNode(preorder[rootIndex]);
    int i = findValue(preorder[rootIndex],inorder);
    rootIndex++;
    if(i > left && rootIndex < preorder.length){
        head.left =  build(preorder,inorder,left,i-1,head.left);
    }
    if(i < right && rootIndex < preorder.length){
        head.right = build(preorder,inorder,i+1,right,head.right);
    }
    return head;
}

public int findValue(int value,int[] target){
    for(int i = 0;i < target.length;i++){
        if(value == target[i]){
            return i;
        }
    }
    return -1;
}
}
上一篇下一篇

猜你喜欢

热点阅读