【问题描述】
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
【AC代码】
1 public class Solution { 2 public boolean VerifySquenceOfBST(int [] sequence) { 3 if (sequence.length == 0) return false; 4 return isBST(sequence, 0, sequence.length-1); 5 } 6 private boolean isBST(int[] seq, int start, int end) { 7 if (start > end) return false; 8 int i = start; 9 for (; i < end; i++) 10 if (seq[i] > seq[end]) break; 11 int j = i; 12 for (; j < end; j++) 13 if (seq[j] < seq[end]) return false; 14 boolean left = true; 15 if (i > start) left = isBST(seq, start, i-1); 16 boolean right = true; 17 if (i < end-1) right = isBST(seq, i, end-1); 18 return left && right; 19 } 20 }View Code