07 重建二叉樹

2021-10-07 15:54:38 字數 1027 閱讀 6908

​ 題目描述

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

​ 示例

前序遍歷 preorder =[3

,9,20

,15,7

]中序遍歷 inorder =[9

,3,15

,20,7

]// 返回如下的二叉樹

3/ \

920/ \

157

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

}// 構造節點

treenode root =

newtreenode

(rootval)

;// 遞迴構造左子樹

root.left =

buildtree

(arrays.

copyofrange

(preorder,1,

1+ index)

, arrays.

copyofrange

(inorder,

0, index));

// 遞迴構造右子樹

root.right =

buildtree

(arrays.

copyofrange

(preorder, index+

1, len)

, arrays.

copyofrange

(inorder, index+

1, len));

return root;

}}

時間複雜度:o(n),空間複雜度:o(n)

07 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 限制 0 節點個數 5000 解 ...

07 重建二叉樹

利用python陣列的index函式來定位根節點在inorder陣列中的位置 index inorder.index root.val preorder陣列不需要進行切片操作,遞迴終止條件主要靠 前兩行中的not inorder來終止。root.left self.buildtree preorde...

演算法07(重建二叉樹)

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 以下是用遞迴寫出的方法,使用了時間...