二叉搜索树的后序遍历序列
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
1 public class Solution { 2 public boolean check(int []s, int l, int r) { 3 int i; 4 for ( i = l; i < r; ++i) { 5 if (s[i] > s[r]) { 6 break; 7 } 8 } 9 int j = i; 10 for (; j < r; ++j) { 11 if (s[j] < s[r]) { 12 return false; 13 } 14 } 15 boolean left = true; 16 if (i > l) { 17 left = check(s, l, i - 1); 18 } 19 boolean right = true; 20 if (i < r) { 21 right = check(s, i, r - 1); 22 } 23 24 return left && right; 25 26 27 } 28 public boolean VerifySquenceOfBST(int [] sequence) { 29 if (sequence.length == 0) return false; 30 return check(sequence, 0, sequence.length - 1); 31 32 33 } 34 }