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

    题目描述

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

    解答

    二叉搜索树的两个特征:
    1,二叉搜索树的左子树的值都小于根节点的值。
    2,二叉搜索树的右子树的值都大于根节点的值。
    后续遍历的根节点都是在最后面,所以先根据后续遍历的结构找到二叉搜索树的根和左、右子树,让后使用递归。
    # coding:utf-8
    
    class Solution:
        def VerifySquenceOfBST(self, sequence):
            # write code here
            if not sequence:
                return False
            root = sequence[-1]
            i = 0
            while i < len(sequence) - 1 and sequence[i] < root:
                i += 1
            for j in sequence[i:]:
                if j < root:
                    return False
            left = True
            right = True
            if i > 0:
                left = self.VerifySquenceOfBST(sequence[:i])
            if i < len(sequence)-1:
                right = self.VerifySquenceOfBST(sequence[i:len(sequence)-1])
            return left and right

    结束!

  • 相关阅读:
    二进制,八进制,十进制,十六进制之间的转换
    Ajax
    JSP
    事务
    BDUtils
    LG. 1003 铺地毯
    Educational Codeforces Round 25
    POJ.3268 Silver Cow Party (Dijkstra)
    POJ.1797 Heavy Transportation (Dijkstra变形)
    POJ. 2253 Frogger (Dijkstra )
  • 原文地址:https://www.cnblogs.com/aaronthon/p/13793885.html
Copyright © 2011-2022 走看看