二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。
分析:
代码实现:
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length==0){
return false;
}
return Verify(sequence,0,sequence.length-1);
}
public boolean Verify(int[] sequence,int start,int end){
if(start>=end){
return true;
}
int i=start;
while(sequence[i]<sequence[end]){
i++;
}
for(int j=i;j<end;j++){
if(sequence[j]<sequence[end]){
return false;
}
}
return Verify(sequence,start,i-1)&&Verify(sequence,i,end-1);
}
}
问题总结
在调试过程中,传入的测试数据:
在向左递归的时候,然后再回溯的时候start=1
了,这是为什么啊
这是测试代码
psvm
public static void main(String[] args) {
// String str = "ab";
int[] arr = {1, 4, 2, 6, 11, 9, 5};
boolean r = VerifySquenceOfBST(arr);
System.out.println(r);
}
主代码:
public static boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length==0){
return false;
}
return Verify(sequence,0,sequence.length-1);
}
public static boolean Verify(int[] sequence,int start,int end){
if(start>=end){
return true;
}
int i=start;
while(sequence[i]<sequence[end]){
i++;
}
for(int j=i;j<end;j++){
if(sequence[j]<sequence[end]){
return false;
}
}
return Verify(sequence,start,i-1)&&Verify(sequence,i,end-1);
}
本文作者:Tiory
本文链接:https://www.cnblogs.com/SunAlbert/p/13510333.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步