二叉搜索树的后序遍历序列
来源:互联网 发布:软件版权说明 编辑:程序博客网 时间:2024/06/07 06:24
1、二叉搜索树的后序遍历序列
来源:牛客网
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
2、思路:后续遍历中,最后一个元素为根节点,小于根节点的元素在左子树,大于根节点的在右子树。
3、代码:
public boolean VerifySquenceOfBST(int [] sequence) { int start = 0, end = sequence.length - 1; if(end == -1) return false; boolean isOrder = verifySquenceOfBST(sequence, start, end); return isOrder; } private boolean verifySquenceOfBST(int[] sequence, int start, int end) { boolean isOrder = true; int i, pos = end; int root_val = sequence[end]; //找到分界点,pos为右子树的起点 for(i = start; i < end; i++){ if(sequence[i] > root_val){ pos = i; break; } } //遍历右子树,需要右子树每一个阶段都大于root_val才满足要求 for(i = pos; i < end; i++){ if(sequence[i] < root_val) isOrder = false; } boolean isLeftOrder = true, isRightOrder = true; if(isOrder){ if(pos - start > 1){ //左子树的节点数大于1 isLeftOrder = verifySquenceOfBST(sequence, start, pos - 1); } if(end - pos > 1){ //右子树结点数大于1 isRightOrder = verifySquenceOfBST(sequence, pos, end - 1); } } return isOrder && isLeftOrder && isRightOrder; }
阅读全文
0 0
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- bzoj5048: 塌陷的牧场
- 【转】python socket编程详细介绍
- List Leaves
- QT学习中遇到的问题
- Nginx配置详情-配置说明-参数优化(一)
- 二叉搜索树的后序遍历序列
- oracle 查询单表某个字段 数据是否有重复
- 大数据的前世今生
- Spring入门(Bean的Aware接口)
- 多态
- 移动架构06_设计模式二:抽象工厂模式
- Redis常考面试题
- 一文搞懂各种 Docker 网络
- HDU——1020 Encoding