首页 > 其他 > 详细

【递归】前序遍历和中序遍历树构造二叉树

时间:2020-04-13 17:50:01      阅读:55      评论:0      收藏:0      [点我收藏+]

思路:

从前序遍历序列中可得到根节点,然后从中序遍历中找出左子树和右子树,再对左子树和右子树进行同样的递归操作。

要注意的点:

root的类型为TreeNode类型,而不是整型

Python实现:

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
"""

class Solution:
    """
    @param preorder : A list of integers that preorder traversal of a tree
    @param inorder : A list of integers that inorder traversal of a tree
    @return : Root of a tree
    """
    def buildTree(self, preorder, inorder):
        # write your code here
        if preorder == [] or inorder == []:
            return None
        root = preorder[0]
        root_pos = inorder.index(root)
        root = TreeNode(root)
        left_len = len(inorder[:root_pos])
        right_len = len(inorder[root_pos+1:])
        root.left = self.buildTree(preorder[1:left_len+1], inorder[:root_pos])
        root.right = self.buildTree(preorder[left_len+1:], inorder[root_pos+1:])
        return root
        

 

【递归】前序遍历和中序遍历树构造二叉树

原文:https://www.cnblogs.com/Akatsuki-Sanjou/p/12692562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!