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

    二叉搜索树的后序遍历序列

    题目描述

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

    image-20200815205244055

    分析:

    image-20200815205646427

    image-20200815205652606

    代码实现:

    image-20200815205159665

    public class Solution {
        public boolean VerifySquenceOfBST(int [] sequence) {
            if(sequence.length==0){
                return false;
            }
            return Verify(sequence,0,sequence.length-1);
        }
        public boolean Verify(int[] sequence,int start,int end){
            if(start>=end){
                return true;
            }
            int i=start;
            while(sequence[i]<sequence[end]){
                i++;
            }
            for(int j=i;j<end;j++){
                if(sequence[j]<sequence[end]){
                    return false;
                }
            }
            return Verify(sequence,start,i-1)&&Verify(sequence,i,end-1);
        }
    }
    

    问题总结

    在调试过程中,传入的测试数据:

    image-20200815210118694

    在向左递归的时候,然后再回溯的时候start=1了,这是为什么

    image-20200815210046649

    这是测试代码

    psvm

    public static void main(String[] args) {
    //        String str = "ab";
            int[] arr = {1, 4, 2, 6, 11, 9, 5};
            boolean r = VerifySquenceOfBST(arr);
            System.out.println(r);
    
    
    
        }
    

    主代码:

      public static boolean VerifySquenceOfBST(int [] sequence) {
            if(sequence.length==0){
                return false;
            }
            return Verify(sequence,0,sequence.length-1);
        }
        public static boolean Verify(int[] sequence,int start,int end){
            if(start>=end){
                return true;
            }
            int i=start;
            while(sequence[i]<sequence[end]){
                i++;
            }
            for(int j=i;j<end;j++){
                if(sequence[j]<sequence[end]){
                    return false;
                }
            }
            return Verify(sequence,start,i-1)&&Verify(sequence,i,end-1);
        }
    
  • 相关阅读:
    shell脚本
    正则表达式和文本处理工具二
    正则表达式和文本处理工具
    Linux基础实操六
    Linux基础实操五
    caffe 试运行MNIST
    转 Windows+VS2013爆详细Caffe编译安装教程
    python一
    VS2008 C++ 调用MATLAB 2009b 生成的DLL .
    MFC抓网页
  • 原文地址:https://www.cnblogs.com/albertshine/p/13510327.html
Copyright © 2011-2022 走看看