1. 程式人生 > 其它 >劍指 Offer 07. 重建二叉樹 - 力扣(LeetCode)

劍指 Offer 07. 重建二叉樹 - 力扣(LeetCode)

技術標籤:劍指offerleetcode演算法hashmap

重建二叉樹

解法一:

時間空間複雜度雙高
應該是因為使用了Arrays.copyOfRange()函式導致的
新思路 不傳入陣列 改為傳入陣列下標 ===>解法二
在這裡插入圖片描述

public static TreeNode buildTree(int[] preorder, int[] inorder) {
    //如果陣列中沒有節點 直接返回null
    if (preorder.length==0) return null;
    TreeNode treeNode = new TreeNode(preorder[0])
; //如果陣列中只有一個節點 直接返回 if (preorder.length==1) return treeNode; int i = 0; while (inorder[i] != treeNode.val){ i++; } //左子樹 if (i > 0){ treeNode.left = buildTree(Arrays.copyOfRange(preorder,1,i+1),Arrays.copyOfRange(inorder,0,i)); } //右子樹 if ((preorder.
length > i+1)&&(inorder.length > i+1)) treeNode.right = buildTree(Arrays.copyOfRange(preorder,i+1,preorder.length),Arrays.copyOfRange(inorder,i+1,inorder.length)); return treeNode; }

解法二: