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);
        }
        
    }
  • 相关阅读:
    JavaScript中的this相关
    Git进阶操作_1
    Git基本操作_5
    Git基本操作_4
    Git基本操作_3
    Git基本操作_2
    利用Python发送SMTP邮件
    Python JWT使用
    Python中的Asyncio 异步编程
    Python中的抽象类和接口类
  • 原文地址:https://www.cnblogs.com/bolianggufeng/p/8570272.html
Copyright © 2011-2022 走看看