思路:
1、末尾为根节点,左子树小于根节点,右子树大于根节点,找到左、右子树分界点,左子树中存在大于根节点的,则False
2、递归判断左、右子树数组是否同样满足
注意:
1、初始节点如果列表为空,则返回False
2、判断函数中,若递归判断到空列表,则返回True
class Solution:
def VerifySquenceOfBST(self , que: List[int]) -> bool:
# write code here
if len(que) == 0:
return False
return self.check(que)
def check(self, que):
if len(que) == 0:
return True
root = que[-1]
j = len(que) - 1
while j >= 0 and que[j] >= root:
j -= 1
for i in range(0, j+1):
if que[i] > root:
return False
return self.check(que[:j+1]) and self.check(que[j+1:-1])