递归:
长度<=2,一定可以做成BST。
长度>2,尾部元素一定是根结点。
BST的特征:全部大于根;全部小于根;左子树小于根,右子树大于根。
class Solution:
    def VerifySquenceOfBST(self , sequence: List[int]) -> bool:
        # 方法:利用根节点的位置,划分左右子树,再进行递归
        def checkBST(seq):
            # 长度小于等于2,一定能做成二叉搜索树
            if len(seq) <= 2: return True
            # 长度大于2,尾部元素一定是当前树的根作比较,来判断是否是BST
            for i in range(len(seq)-1):
                # 先小后大,但不一定是左全小、右全大。对后半做循环加以判断
                if seq[i] < seq[-1] and seq[i+1] > seq[-1]:
                    for j in range(i+1,len(seq)):
                        if seq[j] < seq[-1]:
                            return False
                    # 不是全大,直接False。是全大,则分左右子树递归
                    return checkBST(seq[0:i+1]) and checkBST(seq[i+1:-1])
                # 先大后小,一定不是BST
                if seq[i] > seq[-1] and seq[i+1] < seq[-1]: return False
                # 全小,或者全大,分左子树或右子树递归
                if (seq[i] < seq[-1] and seq[i+1] == seq[-1]) or (seq[i] > seq[-1] and seq[i+1] == seq[-1]):
                    return checkBST(seq[0:-1])
        return len(sequence) and checkBST(sequence)