# coding=utf-8
"""
question:
有一个整数类型的列表,判断该列表是否为对应二叉搜索(查找)树1的后序遍历结果
搜索二叉树的父节点值大于其左子树的所有值,小于其右子树的所有值
"""
def judge(nums):
if not nums:
return False
elif len(nums) == 1: # 递归出口
return True
root = nums[-1] # 根节点的值
pos = 0 # 根节点的位置
for item in nums: # 找根节点位置
if item > root:
break
pos += 1
for item in nums[pos:]: # 剩下的都得比 root 大
if item < root:
return False
if pos == 0 or pos == len(nums): # 只有左子树或右子树
return judge(nums[:-1])
else: # 既有左子树也有右子树
return judge(nums[0:pos]) and judge(nums[pos:-1])
if __name__ == '__main__':
l = [1, 4, 7, 6, 3, 13, 14, 10, 8]
print(judge(l))