首页 > 其他 > 详细

面试题33:二叉搜索树的后序遍历序列

时间:2019-08-15 11:24:36      阅读:82      评论:0      收藏:0      [点我收藏+]

技术分享图片

# -*- coding:utf-8 -*-
class Solution:
    def VerifySquenceOfBST(self, sequence):
        # write code here
        # 先判断边界
        if sequence == []:
            return False
        root = sequence[-1]
        index = None
        del sequence[-1]
        # 先寻找index也就是左右子树的分割index,如果找到分割点后还能遍历到比分割点小的元素,说明不能构成二叉搜索树
        for i in range(len(sequence)):
            if index==None and sequence[i]>root:
                index = i
            if index!=None and sequence[i]<root:
                return False
                
        # 采用递归的方式找左右子树,需要判断sequence[:index]是否为空
        if sequence[:index] == []:
            leftRet = True
        else:
            leftRet = self.VerifySquenceOfBST(sequence[:index])
            
        if sequence[index:] == []:
            rightRet = True
        else:
            rightRet = self.VerifySquenceOfBST(sequence[index:])
        return rightRet and rightRet

  

面试题33:二叉搜索树的后序遍历序列

原文:https://www.cnblogs.com/ivyharding/p/11356718.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!