class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
if not sequence:
return False
if len(sequence)==0:
return False
def check(se):
if len(se) <=2:
return True
root = se[-1]
pos = len(se)-1
for i in se:
if i >root:
pos = se.index(i)
break
left = se[:pos]
right = se[pos:-1]
for j in right:
if j<root:
return False
return check(left) and check(right)
return check(sequence)先使用长度为0排除掉空树
而在后续check中就允许有长度为0的情况了
而且长度为0说明直接可行
还有就是长度为2的直接可行!!!!是非常重要的结束条件
其实整个递归树相当于是一个筛子
逐层筛选出合格的或者不合格的
筛不出来的就进入下一轮筛选

京公网安备 11010502036488号