• 剑指offer:二叉搜索树后序遍历


    题目描述:

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

    思路:

    递归思想,对于一个二叉排序树,其左子树必小于根节点,右子树必大于根节点
    后续遍历的话,最后一位是根节点
    i从0-length,直到找出比根节点大的,即为左子树,j从这里到length,即为右子树
    再遍历判断右子树是否有小于根节点的 有即返回false
    再递归判断左右子树是否满足这个条件即可

     1 public class BSThouxu {
     2 
     3     public boolean VerifySquenceOfBST(int [] sequence) {
     4         if(sequence == null||sequence.length==0) return false;
     5         if(sequence.length == 1) return true;
     6         int len = sequence.length;
     7         int i=0;
     8         for( ; i < len-1;i++){
     9             if(sequence[i]>sequence[len-1]){
    10                 break;
    11             }
    12         }
    13         int j = i;
    14         for(;j<len-1;j++){
    15             if(sequence[j]<sequence[len-1]){
    16                 return false;
    17             }
    18         }
    19         boolean left = true;
    20         boolean right = true;
    21         if(i>0){
    22             left = VerifySquenceOfBST(Arrays.copyOfRange(sequence, 0, i));
    23         }
    24         if(i<len-1){
    25             right = VerifySquenceOfBST(Arrays.copyOfRange(sequence, i, len-1));
    26         }
    27         return (left&&right); 
    28     }
    29 
    30     public static void main(String[] args) {
    31         // TODO Auto-generated method stub
    32 
    33     }
    34 
    35 }
  • 相关阅读:
    modf()函数
    面向对象编程五大原则
    .Net网络资源
    整理CentOS常用命令
    在RHEL5上安装oracle10gLinux
    strchr()函数
    swab函数
    Strstr()函数
    tmpnam函数
    strdup ()函数
  • 原文地址:https://www.cnblogs.com/zlz099/p/8649503.html
Copyright © 2020-2023  润新知