【剑指OFFER】二叉搜索树的后序遍历序列

【问题描述】

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

 

【AC代码】

【剑指OFFER】二叉搜索树的后序遍历序列
 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

 

上一篇:算法笔记-判断是否二叉搜索树


下一篇:Harbor:镜像上传和下载