zoukankan      html  css  js  c++  java
  • 判断二叉搜索树的后序遍历序列

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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);
       }
    }
  • 相关阅读:
    P1629 邮递员送信
    P1119 灾后重建
    最短路问题
    P1194 买礼物
    最小生成树
    P1038 神经网络
    P2661 信息传递
    mysql 5.7启动报错
    docker flannel网络部署和路由走向分析
    k8s---无头服务
  • 原文地址:https://www.cnblogs.com/ScarecrowAnBird/p/6730482.html
Copyright © 2011-2022 走看看