105 從前序與中序遍歷序列構造二叉樹

2021-10-07 12:38:29 字數 1360 閱讀 6377

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。

注意:你可以假設樹中沒有重複的元素。

例子:前序遍歷 preorder = [3,9,20,15,7]

中序遍歷 inorder = [9,3,15,20,7]

每次訪問前序遍歷中的第乙個數,然後找到這個值在中序遍歷的位置,再分左子樹和右子樹,遞迴。

class

solution

(object)

: def buildtree

(self, preorder, inorder)

:"""

:type preorder: list[int]

:type inorder: list[int]

:rtype: treenode

"""def bt

(node, preo, ino, left=

1, right=1)

:if left==

1 and right==0:

node.left =

treenode

(preo[0]

) node = node.left

elif left==

0 and right==1:

node.right =

treenode

(preo[0]

) node = node.right

index = ino.

index

(preo[0]

)if index <

len(preo)-1

: right_in = ino[index +1:

] right_pre = preo[index +1:

]bt(node, right_pre, right_in, left=

0, right=1)

if index >0:

left_in = ino[

:index]

left_pre = preo[

1:index +1]

bt(node, left_pre, left_in, left=

1, right=0)

root =

treenode

(none)

bt(root, preorder, inorder, left=

1, right=0)

return root

Leetcode 從前序與中序遍歷序列構造二叉樹

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 definition for a binary tree node...

105 從前序與中序遍歷序列構造二叉樹

如題,根據前序與中序遍歷序列構造二叉樹 整體思路 前序遍歷的第乙個元素,必然是二叉樹的根節點 在中序遍歷中找到前序遍歷第乙個元素的位置 該位置左邊的所有點都是二叉樹的左子樹元素,該位置右邊的所有點都是二叉樹的右子樹元素 思路一 遞迴 字典 由整體思路可以構建子函式用於遞迴,不斷求子樹的左右子樹,直到...

105 從前序與中序遍歷序列構造二叉樹

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 def buildtree2 preorder,inorder i...