码迷,mamicode.com
首页 > 其他好文 > 详细

33. 二叉搜索树的后序遍历序列

时间:2020-04-03 12:07:23      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:http   size   png   搜索   alt   pre   否则   lse   turn   

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。

技术图片

思路步骤

1.确定根节点root;
2.遍历序列(除去root结点),找到第一个大于root的位置,则该位置左边为左子树,右边为右子树;
3.遍历右子树,若发现有小于root的值,则直接返回false;
4.分别判断左子树和右子树是否仍是二叉搜索树(即递归步骤1、2、3)。

class Solution:
    def verifyPostorder(self, postorder: List[int]) -> bool:
        if postorder is None or len(postorder) == 0:
            return True
        n = len(postorder)
        # 根结点
        root = postorder[-1]
        # 在二叉搜索树中左子树的结点小于根结点
        i = 0
        for i in range(n):
            if postorder[i] > root:
                break
        # 在二叉搜索树中右子树的结点小于根结点
        for j in range(i,n-1):
            if postorder[j] < root:
                return False
        # 判断左子树是不是二叉搜索树
        left = True
        if i > 0:
            left = self.verifyPostorder(postorder[:i])  # 左闭右开
        # 判断右子树是不是二叉搜索树
        right = True
        if i < n-1:
            right = self.verifyPostorder(postorder[i:-1])
        return left and right

 


链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/solution/yi-li-jie-de-di-gui-shi-xian-by-tang-ji-he-de-yu-s/

 

33. 二叉搜索树的后序遍历序列

标签:http   size   png   搜索   alt   pre   否则   lse   turn   

原文地址:https://www.cnblogs.com/USTC-ZCC/p/12625253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!