leetcode 105
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。思路:
前序遍歷 根節點-》左子樹-》右子樹
中序遍歷 左子樹-》根節點-》右子樹
根據兩個遍歷結果中都不存在重複數字,那麼前序遍歷的第乙個數值為起始點,找出該值在中序遍歷陣列中的位置,該位置左側為左子樹,右側為右子樹
遞迴函式:
終止條件:前序和中序陣列為空
單次過程 : 根據前序陣列確定根節點的值,根據根節點在中序陣列的位置劃分左右子樹,然後遞迴構造左右子樹
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
buildtree
(self, preorder: list[
int]
, inorder: list[
int])-
> treenode:
iflen
(preorder)==0
orlen
(inorder)==0
:return
none
root = treenode(preorder[0]
) mid_index = inorder.index(preorder[0]
) root.left = self.buildtree(preorder[
1:mid_index+1]
,inorder[
:mid_index]
) root.right = self.buildtree(preorder[mid_index+1:
],inorder[mid_index+1:
])return root
leetcode 二叉樹重建
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 首先注意到題目中明確指出二叉樹遍歷...
LeetCode 重建二叉樹
前序遍歷 中 左 右 中序遍歷 左 中 右 後序遍歷 左 右 中 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。definition for a binary tree node.struct treenode class soluti...
LeetCode 重建二叉樹
原題鏈結 劍指 offer 07.重建二叉樹 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20...