//輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。
////
//// 例如,給出
//// 前序遍歷 preorder = [3,9,20,15,7]
//中序遍歷 inorder = [9,3,15,20,7]
//// 返回如下的二叉樹:
//// 3
// / \
// 9 20
// / \
// 15 7
////
//// 限制:
//// 0 <= 節點個數 <= 5000
遞迴方法:前序第乙個元素為根節點的值,然後根據中序得到左子樹和右子樹的值。
class
solution
mapindexmap =
newhashmap
();int len = preorder.length;
for(
int i =
0; i < len; i++
) treenode root =
buildtree
(preorder,
0, len -
1, inorder,
0, len -
1, indexmap)
;return root;
}public treenode buildtree
(int
preorder,
int preorderstart,
int preorderend,
int[
] inorder,
int inorderstart,
int inorderend, map
indexmap)
int rootval = preorder[preorderstart]
; treenode root =
newtreenode
(rootval);if
(preorderstart == preorderend)
else
}}
Leecode劍指 Offer 07 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 限制 0 節點個數 5000 分析...
劍指offer07 重建二叉樹
這是乙個非常高頻的面試題。題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例子 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 思路 題目給出了前序和中序遍歷,我們可以知道前序的...
劍指 Offer 07 重建二叉樹
難度 中等 題目描述 解題思路 這道題之前做過,但是忘得乾乾淨淨了。現在再做一遍撿一撿,說不定哪次面試就出到了呢 總體思想就是遞迴,用雜湊表來儲存對應的中序遍歷的下標,空間換時間,免得每次都要去遍歷找下標。然後每次遞迴的時候,要給對應的左子樹和右子樹在對應陣列裡的下標,左端點大於右端點的時候返回空。...