zoukankan      html  css  js  c++  java
  • 【Offer】[33] 【二叉搜索树的后序遍历序列】

    题目描述

      输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true, 否则返回false. 假设输入的数组的任意两个数字都互不相同。例如,输入数组{5,7,6,9,11,10,8},则返回true,因为这个整数序列是下图二叉搜索树的后序遍历结果。如果输入的数组是{7,4,6,5},则由于没有哪棵二叉搜索树的后序遍历结果是这个序列,因此返回false。
      
      

    牛客网刷题地址

    思路分析

      后序遍历序列中的最后一个数字为二叉树的根节点,这样二叉树就可以分为两部分,由于是二叉搜索树,左子树部分的值要小于根节点,右子树树部分的值要大于根节点。

    测试用例

    1. 功能测试:输入的后序遍历序列对应一棵二叉树,包括完全二叉树、所有节点都没有左/右子树的二叉树、只有一个节点的二叉树;输入的后序遍历序列没有对应一棵二叉树。
    2. 特殊输入测试:指向后序遍历序列的指针为nullptr指针。

    Java代码

    public class Offer33 {
        public static void main(String[] args) {
            test1();
            test2();
            test3();
            
        }
        public static  boolean VerifySquenceOfBST(int [] sequence) {
            return Solution1(sequence);
        }
        private static boolean Solution1(int [] sequence) {
            if(sequence==null || sequence.length<=0) {
                return false;
            }
            return verifyCore(sequence, 0, sequence.length-1);
        }
        public static boolean verifyCore(int[] sequence,int start,int end) {
            if(start>=end) {
                return true;
            }
            int mid =start ;
            while(sequence[mid]<sequence[end]) {
                mid++;
            }
            for(int i=mid;i<end;i++) {
                if(sequence[i]<sequence[end]) {
                    return false;
                }
            }
            return verifyCore(sequence, start, mid-1) && verifyCore(sequence, mid, end-1);
        } 
    
        private static void test1() {
            int[] sequence = {5,7,6,9,11,10,8};
            boolean verifySquenceOfBST = VerifySquenceOfBST(sequence);
            System.out.println(verifySquenceOfBST);
        }
    
        private static void test2() {
    
        }
        private static void test3() {
    
        }
    
    }
    

    代码链接

    剑指Offer代码-Java

  • 相关阅读:
    pip 或 pip3 升级操作
    virtualenv和virtualenvwrapper 的安装和使用
    打包 Framework 时使用 CocoaPods 引入第三方库的方法
    数据库-代码建表
    Oracle-数据库
    JAVA-网络编程
    JAVA-枚举
    JAVA-多线程
    0927-练习
    JAVA-流
  • 原文地址:https://www.cnblogs.com/haoworld/p/offer33-er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-li.html
Copyright © 2011-2022 走看看