二叉搜索树的后序遍历序列
题目:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
代码:
package com.sjsq.test; /** * @author shuijianshiqing * @date 2020/5/25 21:26 */ /** * 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历 * 的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意 * 两个数字都互不相同。 */ public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { // 为空时为true if(sequence == null || sequence.length == 0){ return false; } return helqVerifty(sequence,0,sequence.length-1); } public boolean helqVerifty(int seq[],int start,int end){ if(start >= end){ return true; } int key = seq[end]; int i; // 找到左右子树的分界点 for(i = start; i < end; i++){ if(seq[i] > key){ break; } } // 判断从右子树有有没有比key小的,如果有则返回false for(int j = i; j < end; j++){ if(seq[j] < key){ return false; } } // 判断左子树和右子树是否符合 return helqVerifty(seq,start,i-1) && helqVerifty(seq,i,end-1); } }