"""
问题:二叉搜索树的后序遍历序列
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。
如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。
思路:
1.后序遍历:左右根, 得知序列最后一个元素为根节点
2.中序遍历:左根右, 二叉搜索树的中序遍历为单调递增序列
3.要判断是否为二叉搜索树,即看 左<根<右 是否成立即可
"""
# -*- coding:utf-8 -*-
class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
if not sequence:
return False
if len(sequence) == (1 or 2):
return True
root = sequence[-1]
left_list = []
right_list = []
m = len(sequence) - 1
for i in range(m):
if sequence[i] > root:
left_list = sequence[:i]
right_list = sequence[i:m]
break
for i in right_list:
if i < root:
return False
if len(left_list):
self.VerifySquenceOfBST(left_list)
if len(right_list):
self.VerifySquenceOfBST(right_list)
return True
剑指offer 之二叉搜索树的后序遍历序列
最新推荐文章于 2024-07-25 02:49:15 发布