输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
# -*- coding:utf-8 -*-
class Solution:
def VerifySquenceOfBST(self, nums):
if not nums: return False
return self.verifyBST(nums)
def verifyBST(self, nums):
if not nums: return True
root = nums.pop()
index = self.findIndex(nums, root)
if self.verifyRight(nums[index:], root):
left = nums[:index]
right = nums[index:]
return self.verifyBST(left) and self.verifyBST(right)
return False
def verifyRight(self, nums, target):
if not nums: return True
return min(nums) > target
def findIndex(self, nums, target):
for i, num in enumerate(nums):
if num > target:
return i
return len(nums)