zoukankan      html  css  js  c++  java
  • 剑指offer-二叉搜索树的后续遍历

    题目描述

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

    public class Test {
        
        public static void main(String[] args) {
            int[] arr={5,7,6,9,11,10,8};
            System.out.println(verifySquenceOfBST(arr,0, 4));
        }
        
        /**
         * 在后序遍历得到的序列中, 最后一个数字是树的根结点的值。
         * 数组中前面的数字可以分为两部分: 第一部分是左子树结点的值,它们都比根结点的值小
         * 第二部分是右子树结点的值,它们都比根结点的值大。
         * @param sequence 
         * @param start 起始点
         * @param length 序列长度
         * @return 
         */
        public static boolean verifySquenceOfBST(int[] sequence, int start, int length) {
            // 序列为空,返回false
            if(sequence == null || length <= 0) 
                return false;
        
            // 二叉树根节点,后序遍历序列的最后一个
            int root = sequence[length - 1];
            // 左子树结点的数都小于根节点
            int i = 0;
            for(; i < length - 1; i++) {
                if(sequence[i] > root)  // 大于根节点,跳出循环
                    break;
            }
            // 右子树结点的数都大于根节点
            int j = i;
            for(; j < length - 1; j ++) {
                if(sequence[j] < root) 
                    return false;     // 右子树中出现大于根节点的数,直接返回false
            }
            
            // 判断左子树是不是二叉搜索树
            boolean left =true;
            if(i > 0) {  // 左子树存在
                left = verifySquenceOfBST(sequence, 0 ,i);
            }
            
            // 判断右子树是不是二叉搜索树
            boolean right = true;
            if(i < length - 1) { // 右子树存在
                right = verifySquenceOfBST(sequence, i, length - i - 1);
            }
            
            return left && right;
        }
    
    }
  • 相关阅读:
    SVG PATH d参数的 ace
    如果你想动态创建一个iframe
    canvas构建一个平面直角坐标系
    JavaScript版几种常见排序算法
    【分享】 Stip,让表单验证轻松愉快。
    【分享】javascript合并混淆压缩
    【分享】页面提示插件更新
    nodejs 的 session 简单实现
    页面模块之间的通信依赖解决方案
    在平面旋转一个点
  • 原文地址:https://www.cnblogs.com/zywu/p/5776423.html
Copyright © 2011-2022 走看看