前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打卡群刷题总结0810——从前序与中序遍历序列构造二叉树

打卡群刷题总结0810——从前序与中序遍历序列构造二叉树

作者头像
木又AI帮
发布2020-08-12 14:51:35
3050
发布2020-08-12 14:51:35
举报
文章被收录于专栏:木又AI帮木又AI帮

题目:105. 从前序与中序遍历序列构造二叉树

链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7

解题:

1、前序遍历:根左右;中序遍历:左根右。所以,前序遍历能够确定根节点元素,中序遍历能够确定左子树、右子树的元素。

扩展:二叉树的构造方法,除了由层次遍历,还可以有前序+中序,或者中序+后序。注意:前序+后序,不能构造唯一的二叉树。

代码:

代码语言:javascript
复制
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def buildTree(self, preorder, inorder):
        """
        :type preorder: List[int]
        :type inorder: List[int]
        :rtype: TreeNode
        """
        if len(preorder) == 0:
            return None
        node = TreeNode(preorder[0])
        index = inorder.index(preorder[0])
        node.left = self.buildTree(preorder[1: index + 1], inorder[:index])
        node.right = self.buildTree(preorder[index + 1:], inorder[index + 1:])
        return node
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档