首页 > 其他 > 详细

leetcode-面试题33-二叉搜索树的后序遍历序列

时间:2020-04-25 23:48:23      阅读:61      评论:0      收藏:0      [点我收藏+]

 题目描述:

技术分享图片

 

 方法一:递归 最坏O(N^2)

class Solution:
    def verifyPostorder(self, postorder: List[int]) -> bool:
        def recur(i,j):
            if i >= j:return True
            p = i
            while postorder[p] < postorder[j] : p += 1
            m = p
            while postorder[p] > postorder[j] : p += 1
            return p == j and recur(i,m - 1) and recur(m,j - 1)

        return recur(0,len(postorder) - 1)

方法二:辅助单调栈 O(N)

class Solution:
    def verifyPostorder(self, postorder: List[int]) -> bool:
        stack ,root = [],float("inf")
        for i in range(len(postorder) - 1,-1, -1):
            if postorder[i] > root:return False
            while(stack and postorder[i] < stack[-1]):
                root = stack.pop()
            stack.append(postorder[i])
        return True

 

leetcode-面试题33-二叉搜索树的后序遍历序列

原文:https://www.cnblogs.com/oldby/p/12776096.html

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