劍指Offer 07 js 重建二叉樹

2021-10-16 09:59:51 字數 1485 閱讀 9399

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

例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

例如,給出

前序遍歷 preorder = [3,9,20,15,7]

中序遍歷 inorder = [9,3,15,20,7]

返回如下的二叉樹:

3

/ \9 20

/ \

15 7

故我們可以得出以下規律:

從前序遍歷中找到根節點root

在中序遍歷中查詢root的位置index,即可獲取左右子樹的長度

擷取左子樹的前序遍歷、右子樹的前序遍歷

擷取左子樹的中序遍歷、右子樹的中序遍歷

遞迴重建二叉樹 分別獲得左右子樹。

利用根節點和左右子樹即可重建二叉樹。

;// 分割前序遍歷

const preleft = pre.

slice(1

, index+1)

;const preright = pre.

slice

(index +1)

;//分割中序遍歷

const inorderleft = inorder.

slice(0

, index)

;const inorderright = inorder.

slice

(index +1)

;//分別求解左右子樹並生成二叉樹

const node =

newtreenode

(root)

; node.left =

reconstructbinarytree

(preleft, inorderleft)

; node.right =

reconstructbinarytree

(preright, inorderright)

;return node;

}?github筆記 :ruoruochen github

重建二叉數 劍指offer

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。二叉樹四種基本的遍歷思想為 前序遍歷 根結點 左子樹 右子樹 中序遍歷 左子樹 根結點 右子樹 後序遍歷 左子樹 右子樹 根結點 層...

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 思路 題目給出了前序和中序遍歷,我們可以知道前序的...