leetcode 105

mac2024-08-01  62

这题和之前根据后序遍历和中序遍历找树的题目一样,都是根据前序或者后序来找到根节点的值,然后再根据中序遍历找到root,从而将左右子树进行划分,然后递归的进行求解。

代码如下:

# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def buildTree(self, preorder, inorder): """ :type preorder: List[int] :type inorder: List[int] :rtype: TreeNode """ if len(preorder) == 0: return None root_val = preorder[0] root_index = inorder.index(root_val) result = TreeNode(root_val) left_preorder = preorder[1:1+root_index] right_preorder = preorder[1+root_index:] left_inorder = inorder[:root_index] right_inorder = inorder[root_index+1:] result.left = self.buildTree(left_preorder, left_inorder) result.right = self.buildTree(right_preorder, right_inorder) return result

 

最新回复(0)