zoukankan      html  css  js  c++  java
  • 33. 二叉搜索树的后序遍历序列

    题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 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/

     

  • 相关阅读:
    冒泡排序的PHP实现 Bubble Sort
    什么是排序算法
    使用memcache 心得和注意事项
    Memcache存储机制与指令汇总
    php中ob缓存机制
    防止php重复提交表单更安全的方法
    Nginx负载均衡配置实例详解
    FAT和EXFAT文件系统
    uCOS-II模拟(VS2010&WIN32)
    MIPS汇编指令集
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/12625253.html
Copyright © 2011-2022 走看看