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

来源:互联网 发布:手机淘宝怎么请人代付 编辑:程序博客网 时间:2024/05/20 03:36

问题描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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类的方法。

0 0
原创粉丝点击