輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
在二叉樹的前序遍歷和中序遍歷中確定根節點的值,分別找到前序遍歷和中序遍歷左右子樹對應的子串行,再以同樣的方法,構建左右子樹,用遞迴方法完成。
c++
/**
* definition for binary tree
* struct treenode
* };
*/class
solution
}
vector<
int> pre_left,pre_right,vin_left,vin_right;
for(i=
0;i)for
(i=root_index+
1;isize()
;i++
)/* 遞迴呼叫,層層呼叫,直到呼叫到葉子節點,返回null*/
//構建左子樹
root-
>left=
reconstructbinarytree
(pre_left,vin_left)
;//構建右子樹
root-
>right=
reconstructbinarytree
(pre_right,vin_right)
;return root;}}
;
python
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:# 返回構造的treenode根節點
defreconstructbinarytree
(self, pre, tin)
:# write code hereif(
len(pre)==0
orlen
(tin)==0
):return
none
root=treenode(pre[0]
)# for i in range(len(tin)):
# if tin[i]==pre[0]:
# root_index=i
# break
root_index=tin.index(pre[0]
) root.left=self.reconstructbinarytree(pre[1:
1+root_index]
,tin[
:root_index]
) root.right=self.reconstructbinarytree(pre[root_index+1:
],tin[root_index+1:
])return root
4 重建二叉樹
測試通過 時間限制 1秒 空間限制 32768k 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。時間限制 1秒空間限制 32768k 本題知識點 查詢 牛客網陣列題目鏈...
4 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。例如前序遍歷序列和中序遍歷序列為和,假設結果中無重複的數字。重建二叉樹並返回 1 前序遍歷二叉樹的形式為 根節點,左子樹,右子樹 中序遍歷二叉樹的形式為 左子樹,根節點,右子樹 因此我們需要把前序遍歷的第乙個結果new乙個treenode 出來...
4 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。先序序列第乙個數就是根結點而後是左子樹的先序序列和右子樹的先序序列,而中序序列是先是左子樹的中序序列,然後是根結點,最後是右子樹的中...