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的直接可行!!!!是非常重要的结束条件
其实整个递归树相当于是一个筛子
逐层筛选出合格的或者不合格的
筛不出来的就进入下一轮筛选