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

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

    题目描述

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

    public class Solution {
        public boolean VerifySquenceOfBST(int [] sequence) {
            
        }
    }
    

    题目分析

    什么是二叉搜索树(BST)

    二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。

    题解思路

    image

    代码

     public boolean VerifySquenceOfBST(int [] sequence) {
            if(sequence == null || sequence.length == 0) return false;
                int len = sequence.length;
                int i = 0;
                int root = sequence[len - 1];
    
                //二叉搜索树中左节点小于root 当大于root时跳出循环
                for(; i <len-1 ;i++){//注意这里i不能取到len - 1,最后一个数为root
                    if(sequence[i] > root){
                        break;
                    }
                }
    
                //右子树的起始点
                int j = i;
    
                //二叉搜索树中右节点大于root 当小于root返回false
                for(; j < len-1; j++){
                    if(sequence[j] < root) return false;
                }
    
                boolean leftFlg = true;
                boolean rightFlg = true;
                //判断左子树是否是二叉搜索树
                if(i > 0){
                    leftFlg = VerifySquenceOfBST( Arrays.copyOfRange(sequence,0,i ));
                }
                //判断右子树是否是二叉搜索树
                if(i < len -1 ){
                    rightFlg = VerifySquenceOfBST(Arrays.copyOfRange(sequence,i,len-1 ));
                }
    
                return (leftFlg&&rightFlg);
    
        }
    

    总结

    • 采用copyOfRange()方法复制数组的一部分,安利一下(要注意的是区间范围是左闭右开)
    • 注意sequence为空的情况
  • 相关阅读:
    linux第三方程序移植
    jffs2文件系统制作
    NFS文件系统制作
    linux-3.0内核移植到fl2440开发板(以MINI2440为模板)
    linux根文件系统制作
    u-boot-2010.09移植(A)
    u-boot-2010.09移植(B)
    browser shell
    管理者的角色修炼-第三课-赢在执行
    管理者的角色修炼-第二课总结
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10428294.html
Copyright © 2011-2022 走看看