二叉搜索树的后序遍历序列(二叉搜索树的应用)
来源:互联网 发布:淘宝售后安装平台接单 编辑:程序博客网 时间:2024/06/11 05:13
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
二叉搜索树满足左孩子的每一个结点都小于根结点,右孩子的每一个结点都大于根结点。
由于是后序遍历,所以根结点在最后的位置。
获取到根结点,通过根结点把左子树和右子树分开,如果左子树和右子树的每个结点的值都满足二叉搜索树的条件(左孩子的每一个结点都小于根结点,右孩子的每一个结点都大于根结点)的话,则进行遍历,否则返回False。
# -*- coding:utf-8 -*-class Solution: def VerifySquenceOfBST(self, sequence): # write code here if not sequence: return False # 获取根节点 root = sequence[-1] # 根据二叉搜索树的性质,左孩子的每个结点的值都小于根节点 for i in range(len(sequence)): if sequence[i] > root: break # 判断是否右孩子的每个结点的值都大于根结点 for j in range(i, len(sequence)): if sequence[j] < root: return False left = True # i > 0 的时候证明有左孩子 if i > 0: # 递归遍历左孩子 left = self.VerifySquenceOfBST(sequence[ : i]) right = True # 证明有右孩子,通过i的值不在最后一个结点判断,len(sequence) - 1 为sequence的最后一个结点 if i < len(sequence) - 1: right = self.VerifySquenceOfBST(sequence[i : -1]) return left and right
0 0
- 二叉搜索树的后序遍历序列(二叉搜索树的应用)
- 二叉树------二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列序列判断是否是二叉搜索树
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 异常处理
- spark入门之四 任务的调度stages划分
- 少数派报告——树莓派搭建Tor匿名站点
- Android视频裁剪自定义View
- [Coursera机器学习]K-means Clustering and Principal Component Analysis WEEK8编程作业
- 二叉搜索树的后序遍历序列(二叉搜索树的应用)
- 268. Missing Number
- 一、Noip2003,数字游戏题解(环形DP)
- 低端笔记本安装Android studio 环境搭建
- 高效率工具整理
- 交换两个变量的值,不使用第三个变量的四种法方
- wamp安装以及域名的配置
- P3370 【模板】字符串哈希
- cf-e