您的位置:首页 > Web前端

剑指offer 之 二叉搜索树的后序遍历序列

2017-08-01 14:51 288 查看
# coding:utf-8

'''
面试24:二叉搜索树的后序遍历序列
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。
如果是则输出true,否则输出false。假设输入的数组的任意两个数字都互不相同。
'''

class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
if not sequence:
return False

length = len(sequence)
root = sequence[-1]

# 在二叉搜索树中左子树的节点小于根节点
for i in range(length):
if sequence[i] > root:
break

# 在二叉搜索树中右子树的节点大于根节点
for j in range(i, length):
if sequence[j] < root:
return False

# 判断左子树是不是二叉树
left = True
if i > 0:
left = self.VerifySquenceOfBST(sequence[:i])

right = True
if j < length-1:
right = self.VerifySquenceOfBST(sequence[j:])
return left and right

array = [5, 7, 6, 9, 11, 10, 8]
array2 = [4, 6, 7, 1, 5]
array3 = [1, 2, 3, 4, 5]
S = Solution()
print(S.VerifySquenceOfBST(array))
print(S.VerifySquenceOfBST(array2))
print(S.VerifySquenceOfBST(array3))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息