106 從中序與後序遍歷序列構造二叉樹

2022-05-13 08:36:15 字數 1111 閱讀 1879

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

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

例如,給出

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

後序遍歷 postorder = [9,15,7,20,3]

返回如下的二叉樹:

3/ \

9 20

/ \

15 7

#

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, inorder: list[int], postorder: list[int]) ->treenode:

defdfs(inorder,in_start,in_end,postorder,post_start,post_end):

if in_start>in_end:return

none

if in_start==in_end:return

treenode(inorder[in_start])

if post_start==post_end:return

treenode(inorder[in_start])

root=treenode(postorder[post_end])

i=inorder.index(root.val)

root.left=dfs(inorder,in_start,i-1,postorder,post_start,post_start+i-1-in_start)

root.right=dfs(inorder,i+1,in_end,postorder,post_start+i-in_start,post_end-1)

return

root

n=len(inorder)

return dfs(inorder,0,n-1,postorder,0,n-1)

106 從中序與後序遍歷序列構造二叉樹

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

106 從中序與後序遍歷序列構造二叉樹

思路 和105題一樣,這次根節點在後續遍歷的最後,找到它 之後在中序遍歷裡找到根節點。arrays.copyofrange 函式找出中序陣列和後續陣列的左右子樹序列,遞迴,構成樹,返回根節點。不細說了。感覺挺簡單。definition for a binary tree node.public cl...

T106從中序與後序遍歷序列構造二叉樹

思想 跟從前序和中序序列構造二叉樹相反,這裡依據後序遍歷來確定每個子樹的root,基於後序遍歷的特定可知 當前子樹區間的最後乙個節點即為其root,然後去中序遍歷序列中找到這個root的位置即為rootidx,則在對應的中序區間 instart,int inend 中從 rootidx 1,inen...