```python
class
solution
:def
buildtree
(self, preorder: list[
int]
, inorder: list[
int])-
> treenode:
defrecur
(root,left,right)
:if left>right:
return
#遞迴終止
node=treenode(preorder[root]
)#根節點為前序遍歷的首位
i=dic[preorder[root]
]#劃分根節點和左右子樹,i是中序遍歷中的索引
node.left=recur(root+
1,left,i-1)
#遞迴左子樹,根索引為先序中根節點+1,左邊界中序inorder_left,右邊界中序根節點索引-1
node.right=recur(i-left+root+
1,i+
1,right)
#右子樹:根索引為preorder中根+左子樹數量+1,右子樹左邊界inorder當前root+1,右inorder右邊界
return node #回溯返回根節點
dic,preorder=
,preorder
for i in
range
(len
(inorder)):
#遍歷中序
dic[inorder[i]
]=i #將中序序列用雜湊表儲存,方便遞迴時獲取左子樹和右子樹的數量及其根的索引
return recur(0,
0,len(inorder)-1
)#根索引,左邊界,右邊界
劍指offer 重建二叉樹
重建二叉樹2.cpp 定義控制台應用程式的入口點。題目描述 輸入乙個二叉樹的前序遍歷和中序遍歷,輸出這顆二叉樹 思路 前序遍歷的第乙個節點一定是這個二叉樹的根節點,這個節點將二叉樹分為左右子樹兩個部分,然後進行遞迴求解 include stdafx.h include vector using na...
《劍指offer》重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,則重建二叉樹並返回。輸入乙個樹的前序和中序,例如輸入前序遍歷序列和中序遍歷序列 根據輸入的前序和中序,重建乙個該二叉樹,並返回該樹的根節點。definition for binary...
劍指offer 重建二叉樹
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。definition for binary tree struct treenode class solution if ...