Leetcode 重建二叉樹

2021-10-03 04:37:11 字數 1135 閱讀 7670

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...