/** * 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 * * @author pomay * */ public class Solution_afterbianli { public boolean VerifySquenceOfBST(int[] sequence) { if (sequence == null || sequence.length == 0) return false; // 判断该数组是不是某二叉搜索树的后序遍历,那根结点就是序列最后一个 int root = sequence[sequence.length - 1]; // 在二叉排序树中,左子树值都小于根结点值 int i = 0; for (; i < sequence.length - 1; i++) { if (sequence[i] > root) break; } // 在二叉排序树中,右子树值都大于根结点值 int j = i; for (; j < sequence.length - 1; j++) { if (sequence[j] < root) break; } // 如果是某二叉搜索树的后序遍历,会在正常情况下,即j=sequence.length-1跳出循环,即根结点之前的结点都遍历了一遍,说明该数组是不是某二叉搜索树的后序遍历 if (j == sequence.length - 1) return true; else return false; } public static void main(String[] args) { int[] sequence = { 5, 7, 6, 9, 11, 10, 8 }; // { 7,4,6,5 }; Solution_afterbianli s = new Solution_afterbianli(); System.out.print(s.VerifySquenceOfBST(sequence)); } }