题目:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出True,否则输出False。假设输入的数组的任意两个数字都互不相同。
前置技能
二叉搜索树的后序遍历特点:分析如图(以剑指offer例子为例)
# -*- coding:utf-8 -*-
class Solution:
def VerifySquenceOfBST(self, sequence):
def judge(seq, start, end):
if start>=end:
return True
i = end
while i>start and seq[i-1]>seq[end]:
i -= 1
for j in range(start, i):
if seq[j]>seq[end]:
return False
return judge(seq, start, i-1) and judge(seq, i, end-1)
if not sequence:
return False
return judge(sequence, 0, len(sequence)-1)
思路自己想的 但由于刚入坑实力较差 参考代码链接如下原文