您的位置:首页 > Web前端

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

2016-06-24 11:55 483 查看
题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: