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

来源:互联网 发布:centos安装zlib 编辑:程序博客网 时间:2024/05/20 14:26

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

public class Solution {    public boolean VerifySquenceOfBST(int [] sequence) {            if(sequence==null||sequence.length==0) return false;        else return BST(sequence);    }    public boolean BST(int [] sequence) {    if(sequence.length==1||sequence.length==2||sequence.length==0) return true;        int i=0,j=0,last=sequence[sequence.length-1];        while(i<=(sequence.length-1)&&sequence[i]<last) i++;        j=i;        while(i<=(sequence.length-1)&&sequence[i]>last) i++;        if(i!=sequence.length-1) return false;        int[] l=new int[j];        int[] r=new int[sequence.length-j-1];        copy(l,sequence,0,j);        copy(r,sequence,j,sequence.length-1);        return BST(l)&& BST(r);    }    public void copy(int[] ret,int[] left,int l,int r){        for(int i=l;i<r;i++)            ret[i-l]=left[i];    }}
0 0
原创粉丝点击