您的位置:首页 > 其它

二叉搜索树的后序遍历序列

2019-03-19 15:24 93 查看
版权声明:如需转载,请写明出处 https://blog.csdn.net/weixin_43113679/article/details/88663410

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

public class Solution {

public boolean IsBST(int [] sequence,int first,int last){
//当first和last相等的时候就是叶子节点不用考虑再往下了,
if(first>=last){
return true;
}
//i从后往前遍历,确定那个中间点也就是当前根节点,小于根节点的位置,也就是根节点的左孩子,
int i =last;
while(i>first&&sequence[i-1]>sequence[last]){
--i;
}
//上边能保证到i到最后都比当前根节点大,下面就是遍历第一个到i
for(int j =i-1;j>=first;--j){
if(sequence[j]>sequence[last]){
return false;
}
}
//进行递归,必须全部是TRUE才行
return IsBST(sequence, first, i-1)&&IsBST(sequence, i, last-1);
}
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length<1){
return false;
}
return IsBST(sequence, 0,sequence.length-1);

}

}

来这看看,还有很多其他的思路

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: