剑指Offer 24题 二叉搜索树的后序遍历序列 Java

本文介绍了一种算法,用于验证一个整数序列是否可能为某一二叉搜索树的后序遍历结果。通过递归地检查每个子树是否符合二叉搜索树的性质来实现。文章提供了一个Java实现示例。

这里需要注意的就是,Java是按照位置定位的。


package test;

public class VerifySquenceOfBST {
	
	public boolean verifySquenceOfBST(int[] sequence,int start,int end){
		if(sequence == null || start>end)
			 return false;
		int root = sequence[end];
		int i=start;
		for(; i <end; ++i){
			if(sequence[i]>root)
				break;
		}
		int j=i;
		for(; j<end; ++j){
			if(sequence[j]<root)
				return false;
		}
		boolean left = true;
		if(i>start)
			left = verifySquenceOfBST(sequence, start, i-1);
		
		boolean right = true;
		if(i<end-1)
			right = verifySquenceOfBST(sequence, i,end-1);
		
		return (left && right);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        int[] data = {5,7,6,9,11,10,8};
        int[] data1 = {7,4,6,5};
        VerifySquenceOfBST verifySquenceOfBST = new VerifySquenceOfBST();
        boolean b1=verifySquenceOfBST.verifySquenceOfBST(data, 0, data.length-1);
        boolean b2=verifySquenceOfBST.verifySquenceOfBST(data1, 0, data1.length-1);
        System.out.println(b1);
        System.out.println(b2);
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值