二叉搜索树的后序遍历序列-剑指offer(java实现)

验证二叉搜索树后序遍历
本文介绍了一个Java程序,用于判断给定数组是否为某个二叉搜索树的后序遍历结果。通过递归算法实现了这一功能,并利用Arrays类辅助处理数组操作。

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

二叉搜索树特点:对任意一个结点,其值大于左子树所有结点的值,小于右子树所有结点的值。注:剑指offer认为空树返回false

java程序如下:

import java.util.Arrays;
public class Solution13 {
	public boolean VerifySquenceOfBST(int [] sequence) {
       int len = sequence.length;
       boolean res = m(sequence,len);
       return res;
    }
	public boolean m(int[] sequence,int len){
		if(sequence==null||len<=0){
			return false;
		}
		int root = sequence[len-1];
		int index=0;
		while(sequence[index]<root){  //左子树中结点的值小于根节点的值
			index++;
		}
		for(int i=index+1;i<len;i++){  //右子树中结点的值大于根节点的值
			if(sequence[i]<root){
				return false;
			}
		}
		boolean left=true;
		if(index>0){
			left=m(sequence,index);
		}
		boolean right=true;
		if((index+1)<len){
			right=m(Arrays.copyOfRange(sequence,index,sequence.length),len-1-index);
		}
		return left&&right;	
	}
	public static void main(String[] args){
		int [] a={7,4,6,5};
		Solution13 s = new Solution13();
		boolean res=s.VerifySquenceOfBST(a);
		System.out.println(res);
	}
}
程序中用到了递归以及Arrays类的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值