題目描述
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。 示例
前序遍歷 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 以下是用遞迴寫出的方法,使用了時間...