劍指offer 題目 07 重建二叉樹

2021-10-25 14:14:30 字數 1154 閱讀 1564

//輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。 

////

//// 例如,給出

//// 前序遍歷 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 重建二叉樹

難度 中等 題目描述 解題思路 這道題之前做過,但是忘得乾乾淨淨了。現在再做一遍撿一撿,說不定哪次面試就出到了呢 總體思想就是遞迴,用雜湊表來儲存對應的中序遍歷的下標,空間換時間,免得每次都要去遍歷找下標。然後每次遞迴的時候,要給對應的左子樹和右子樹在對應陣列裡的下標,左端點大於右端點的時候返回空。...