def IsAfterOrder(arr, start, end):
if arr == None:
return False
root = arr[end]
i = start
while i<end :
if arr[i]>root:
break
i += 1
j = i
while j<end :
if arr[j]<root :
return False
j += 1
left_IsAfterOrder = True
right_IsAfterOrder = True
if i>start :
left_IsAfterOrder = IsAfterOrder(arr, start, i-1)
if j<end :
right_IsAfterOrder = IsAfterOrder(arr, i, end)
return left_IsAfterOrder and right_IsAfterOrder
if __name__ == '__main__':
arr = [1, 3, 2, 5, 7, 6, 4]
result = IsAfterOrder(arr, 0, len(arr)-1)
i = 0
while i<len(arr):
print(arr[i],end=' ')
i += 1
if result:
print('是某一二元查找树的后序遍历序列')
else:
print('不是某一二元查找树的后序遍历序列')
Python:如何判断一个数组是否是二元查找树后序遍历的结果
最新推荐文章于 2021-09-07 14:51:22 发布