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

博客主要围绕判断一个整数数组是否为某二叉搜索树的后序遍历结果展开,若满足条件则输出Yes,不满足则输出No,且数组中任意两个数字互不相同,还提及有其他思路。

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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);
        
    }
	
	
}

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值