题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思想:在二叉搜索树中左子树的节点小于根节点,找到左子树;
在二叉搜索树中左子树的节点小于根节点,找到右子树;
然后判断左子树是不是二叉搜索树,右子树是不是二叉搜索树。
二叉搜索树的特点:左子树的值小于等于根节点,右子树的值大于等于根节点。
java代码:
public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length==0){ return false; } return isRight(sequence,0,sequence.length-1); } public boolean isRight(int[]sequence,int start,int end){ if(end<=start){ return true; } int i=start; for(;i<end;i++){ if(sequence[i]>sequence[end]){ break; } } for(int j=i;j<end;j++){ if(sequence[j]<sequence[end]){ return false; } } return isRight(sequence,start,i-1)&&isRight(sequence,i,end-1); } }