zoukankan      html  css  js  c++  java
  • 判断数组是否为二叉排序树的后序遍历序列

    /*二叉搜索树  根节点大于左节点    小于右节点
     思路:递归思想  
     后续遍历的最后一个节点  一定是根节点
     从数组开始找到第一个大于根节点的数组元素   从开始到该元素前一个点都为左子树
     从该元素  到数组倒数第二个元素  为右子树  
     如果右子树节点值 小于根节点 返回 false
     
     最后分别在左右子树递归  
     直到数组中只有一个元素 返回true
    */
    public class Solution {
        boolean flag=false;
        public boolean VerifySquenceOfBST(int [] sequence) {
          if(sequence.length==0) return false; 
          return subtest(sequence,0,sequence.length);
        }
        
        public boolean subtest(int[]subsequence,int start,int end){
            if(start>=end)return true;
            int i=start;
            for(;i<end;i++){ //该循环  寻找左子树的分界点
                if(subsequence[i]>subsequence[end-1]) break;
            }
            for(int j=i;j<end;j++){//遍历右子树  出现节点值小于根节点返回false
                if(subsequence[j]<subsequence[end-1]) return false;
            }
            return subtest(subsequence,start,i-1) && subtest(subsequence,i,end-1);
        }
        
    }
  • 相关阅读:
    Linux 相关scsi命令
    存储
    Multipath多路径冗余全解析
    Oracle中alter system命令参数之scope
    scipy安装失败
    font
    查看端口占用
    oracle参数优化
    组播
    sql给整数补零
  • 原文地址:https://www.cnblogs.com/bolianggufeng/p/8570272.html
Copyright © 2011-2022 走看看