剑指Offer-Java-二叉搜索树的后序遍历序列
Posted 水坚石青
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer-Java-二叉搜索树的后序遍历序列相关的知识,希望对你有一定的参考价值。
二叉搜索树的后序遍历序列
题目:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
代码:
package com.sjsq.test;
/**
* @author shuijianshiqing
* @date 2020/5/25 21:26
*/
/**
* 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历
* 的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意
* 两个数字都互不相同。
*/
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
// 为空时为true
if(sequence == null || sequence.length == 0){
return false;
}
return helqVerifty(sequence,0,sequence.length-1);
}
public boolean helqVerifty(int seq[],int start,int end){
if(start >= end){
return true;
}
int key = seq[end];
int i;
// 找到左右子树的分界点
for(i = start; i < end; i++){
if(seq[i] > key){
break;
}
}
// 判断从右子树有有没有比key小的,如果有则返回false
for(int j = i; j < end; j++){
if(seq[j] < key){
return false;
}
}
// 判断左子树和右子树是否符合
return helqVerifty(seq,start,i-1) && helqVerifty(seq,i,end-1);
}
}
以上是关于剑指Offer-Java-二叉搜索树的后序遍历序列的主要内容,如果未能解决你的问题,请参考以下文章