zoukankan      html  css  js  c++  java
  • 二叉树相关编程题总结

    1、二叉树后序遍历

    class Solution(object):
        def postorderTraversal(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            res = []
            def helper(root):
                if not root:
                    return
                helper(root.left)
                helper(root.right)
                res.append(root.val)
            helper(root)
            return res

    2、从前序与中序遍历序列构造二叉树

    class Solution(object):
        def buildTree(self, preorder, inorder):
            """
            :type preorder: List[int]
            :type inorder: List[int]
            :rtype: TreeNode
            """
            def helper(inc_start, inc_end):
                if inc_start == inc_end:
                    return None
                inc_value = preorder[self.pre_index]
                root = TreeNode(inc_value)
                self.pre_index += 1
                root.left = helper(inc_start, inc_value_map[inc_value])
                root.right = helper(inc_value_map[inc_value] + 1, inc_end)
                return root
            self.pre_index = 0
            inc_value_map = {v: k for k, v in enumerate(inorder)}
            return helper(0, len(inorder))

    3、从后序与中序遍历序列构造二叉树

    class Solution(object):
        def buildTree(self, inorder, postorder):
            """
            :type inorder: List[int]
            :type postorder: List[int]
            :rtype: TreeNode
            """
            def helper(in_start, in_end):
                if in_start == in_end:
                    return None
                val = postorder[self.pos_index]
                root = TreeNode(val)
                self.pos_index -= 1
                root.right = helper(inc_map[val] + 1, in_end) 
                root.left = helper(in_start, inc_map[val])
                return root
            self.pos_index = len(postorder) - 1
            inc_map = {v:k for k,v in enumerate(inorder)}
            return helper(0, len(postorder))
  • 相关阅读:
    fill 全解(转)
    解题报告 疯狂的馒头
    解题报告 报数
    解题报告 noi 2005 智慧珠游戏(BT 搜索)
    解题报告 跑步
    解题报告 Punch
    解题报告 纪念日
    解题报告 新兵站队
    转载:让理科生沉默,让文科生流泪的综合题
    解题报告 信号放大器
  • 原文地址:https://www.cnblogs.com/weswes/p/12078860.html
Copyright © 2011-2022 走看看