判断二叉搜索树的后序遍历序列

Posted 落叶归根

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断二叉搜索树的后序遍历序列相关的知识,希望对你有一定的参考价值。

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

分析:采用递归的思想,先找出根节点,左子树元素都必须比根节点小,右子树节点都比根节点大,否则返回false.

得到子树(子序列)的两种方法: 

①用下标把数组 逻辑分为几个子数组(这里采用的是这种)

②用工具类Arrays把数组分割

public class Solution {
   public boolean VerifySquenceOfBST(int [] sequence) {
       if(sequence==null || sequence.length==0) return false;
       return IsTreeOfBST(sequence,0,sequence.length-1);
   }
public boolean IsTreeOfBST(int [] sequence,int start,int end){     //子数组为空
       if(end<=start) return true;

       int i=0;
       for(;i<end;i++){//找到左右子树分割点
           if(sequence[i]>sequence[end]) break;
       }
       for(int j=i;j<end;j++){
           if(sequence[j]<sequence[end]) return false;
       }
       //递归
return IsTreeOfBST(sequence,0,i-1)&&IsTreeOfBST(sequence,i,end-1);
   }
}

以上是关于判断二叉搜索树的后序遍历序列的主要内容,如果未能解决你的问题,请参考以下文章

PTA 7-28 搜索树判断(镜像二叉搜索树的后序遍历)

二叉搜索树的后序遍历序列(剑指offer-23)

二叉搜索树的后序遍历

判断二叉搜索树的后序遍历序列

剑指offer 24:二叉搜索树的后序遍历序列

剑指 Offer 33. 二叉搜索树的后序遍历序列(java解题)