二叉搜索树的后序遍历序列(Java实现)

来源:互联网 发布:阿里云 搭建vpn 编辑:程序博客网 时间:2024/06/07 06:14

本题为剑指offer面试题24.


牛客网测试地址:https://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd


[编程题]二叉搜索树的后序遍历序列
  • 参与人次:81730次时间限制:1秒空间限制:32768K
  • 算法知识视频讲解
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。


代码如下:

package go.jacob.day427;public class Demo1 {public boolean VerifySquenceOfBST(int[] sequence) {/* * 判空条件必须是两个: * |--sequence == null为true,不会执行sequence.length == 0 * |--sequence == null为false,执行sequence.length == 0不会报空指针异常 */if (sequence == null || sequence.length == 0)return false;int N = sequence.length;return VerifySquenceOfBST(sequence, 0, N - 1);}private boolean VerifySquenceOfBST(int[] sequence, int left, int right) {if (left >= right)return true;int root = sequence[right];//i记录比root(根节点)大的第一个元素的索引int i = left;for (; i < right - 1; i++) {if (sequence[i] > root)break;}//如果右子树有元素小于root,返回false;for (int j = i; j < right - 1; j++) {if (sequence[j] < root)return false;}//否则递归求解左子树和右子树return VerifySquenceOfBST(sequence, left, i - 1) && VerifySquenceOfBST(sequence, i, right - 1);}}





0 0