23.二叉搜索树的后序遍历序列
来源:互联网 发布:java 初始化常量 编辑:程序博客网 时间:2024/06/01 10:36
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路:二叉搜索树即根节点比左子树的所有节点的值都大,并且比右子树左右结点的值都小,又因为数组要判断数组是不是二叉树的后续遍历序列,假设该序列是二叉搜索树的后序遍历序列,那么序列的最后一个元素一定是根节点,到这里,我们的解题思路如下:
首先,从第一个元素开始起,找到第一个比最后元素大的元素位置p,则该位置之前的元素全是根节点的左节点的值,
然后,再判断从当前位置p起,一直到根节点,有没有比根节点小的节点存在,如果有,则不满足二叉搜索树的条件,如果没有,则将p前后的节点分成两颗子树再进行递归。
import java.util.Arrays;public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if (sepuence == null || sepuence.length == 0) return false; int i = 0; for (; i < sequence.length; i++){ if (sequence[i] > sequence[sequence.length - 1]) break; } int p = i; for (; p < sequence.length; p++){ if (sequence[p] < sequence[sequence.length - 1]) return false; } boolean left = true; boolean right = true; if (i > 0 && i < sequence.length - 1){ left = VerifySquenceOfBST(Arrays.copyOfRange(sequence, 0, i); right = VerifySquenceOfBST(Arrays.copyOfRange(sequence, i, sequence.length - 1); } return left && right; } }
0 0
- 23.二叉搜索树的后序遍历序列
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 仅有wifi的情况下使用Raspberry pi
- 多文档 添加菜单栏 工具栏 删除ribbon
- Android基础——控件的混合生命周期
- poj1458 裸题
- 德才论 (25)
- 23.二叉搜索树的后序遍历序列
- Asp.Net MVC学习总结(三)——过滤器你怎么看?
- 关于闭包的问题
- 【转】一个程序员应该具备的基础知识和概念
- Spring boot 和 mybatis 学习笔记2--Mapper XML (静态)
- bzoj2014
- HTTP网络请求原理 (二) Http报文格式解析
- 对称算法分类及加密模式
- 资产盘点帐实相符的条码录入Excel方法