失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > LeetCode 刷题之旅(.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

LeetCode 刷题之旅(.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

时间:2021-02-09 04:51:32

相关推荐

LeetCode 刷题之旅(.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

LeetCode 刷题之旅(.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

题目:

根据一棵树的前序遍历与中序遍历构造二叉树。

注意:

你可以假设树中没有重复的元素。

例如,给出

前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]

返回如下的二叉树:

3/ \9 20/ \15 7

解题模板:

Python 3:

# Definition for a binary tree node.# class TreeNode:#def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution:def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:

解题思路:

递归法:

按照先左子树,后右子树的顺序递归,直到数组的先序列表和中序列表中的元素都用完为止。

解法:

class Solution:def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:if not preorder or not inorder:returnroot = TreeNode(preorder[0])num = inorder.index(preorder[0])root.left = self.buildTree(preorder[1 : 1 + num], inorder[: num])root.right = self.buildTree(preorder[1 + num:], inorder[num + 1:])return root

时间复杂度O(N)

空间复杂度O(1)

如果觉得《LeetCode 刷题之旅(.05.22)——105. 从前序与中序遍历序列构造二叉树(中)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。