输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
import java.util.Arrays; public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length==0 ){ return false; } if(sequence.length ==1){ return true; } int len = sequence.length; int root = sequence[len-1]; //判断左子树是不是小于根节点值 int i; for(i=0;i<len-1;i++){ if(sequence[i] > root){ break; } } //判断右子树是不是大于根节点值 for(int j = i;j<len-1;j++){ if(sequence[j] < root){ return false; } } //判断左子树是否成立 boolean left=true; if(i>0 ){ left = VerifySquenceOfBST(Arrays.copyOfRange(sequence, 0, i)); } boolean right=true; if(i<len-1){ right = VerifySquenceOfBST(Arrays.copyOfRange(sequence, i, len-1)); } return left && right; } }

更多精彩