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);
        }
        
    }
  • 相关阅读:
    2018-04-13Java编程夯实学习心得(3)
    2018-03-28JavaScript学习心得
    2018-03-27mysql学习心得
    JavaScript-作用域
    样式切换图
    购物车结算
    Visual Studio Code快捷键操作
    复选框
    win10锁屏界面无法设置隐藏
    轮播图
  • 原文地址:https://www.cnblogs.com/bolianggufeng/p/8570272.html
Copyright © 2011-2022 走看看