二叉搜索树的后序遍历序列
来源:互联网 发布:asp开源cms 编辑:程序博客网 时间:2024/06/08 09:24
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
解析
链接:https://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd
来源:牛客网BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x
(也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前一段(左子树)小于x,后一段(右子树)大于x,且这两段(子树)都是合法的后序序列。完美的递归定义 。
非递归
public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence==null)return false; int size = sequence.length; if(0==size)return false; int i = 0; while((--size)>0) { while(sequence[i]<sequence[size]){i++;} while(sequence[i]>sequence[size]){i++;} //如果 i==size,说明最后一个数刚好把数组分成两个部分,一个全比它大,一个全比它小 if(i<size)return false; i=0; } return true; }}
递归版本
链接:https://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd来源:牛客网public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length==0) return false; if(sequence.length==1) return true; return ju(sequence, 0, sequence.length-1); } public boolean ju(int[] a,int star,int root){ if(star>=root) return true; int i = root; //从后面开始找 while(i>star&&a[i-1]>a[root]) i--;//找到比根小的坐标 //从前面开始找 star到i-1应该比根小 for(int j = star;j<i-1;j++) if(a[j]>a[root]) return false;; return ju(a,star,i-1)&&ju(a, i, root-1); }}
阅读全文
0 0
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- oracle学习笔记
- 源码(二)
- 关于js原型和继承的方法复习
- WinRAR x64 v5.5中文版去广告过程
- 1003 Dijkstra
- 二叉搜索树的后序遍历序列
- Oracle DDL语句及示例代码
- MD5算法原理
- HDU 2296 Ring(AC自动机+DP)
- git 基础
- (转)独家| ICO被定性为涉嫌非法集资 一夜暴富梦碎
- ESP8266-AT固件之STA模式
- C++ 图论-拓扑排序
- Namenode HA原理详解