剑指Offer-Java-二叉搜索树的后序遍历序列

简介: 剑指Offer-Java-二叉搜索树的后序遍历序列

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


题目:


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


代码:

package com.sjsq.test;
/**
 * @author shuijianshiqing
 * @date 2020/5/25 21:26
 */
/**
 * 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历
 * 的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意
 * 两个数字都互不相同。
 */
public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        // 为空时为true
        if(sequence == null || sequence.length == 0){
            return false;
        }
        return helqVerifty(sequence,0,sequence.length-1);
    }
    public boolean helqVerifty(int seq[],int start,int end){
        if(start >= end){
            return true;
        }
        int key = seq[end];
        int i;
        // 找到左右子树的分界点
        for(i = start; i < end; i++){
            if(seq[i] > key){
                break;
            }
        }
        // 判断从右子树有有没有比key小的,如果有则返回false
        for(int j = i; j < end; j++){
            if(seq[j] < key){
                return false;
            }
        }
        // 判断左子树和右子树是否符合
        return helqVerifty(seq,start,i-1) && helqVerifty(seq,i,end-1);
    }
}
相关文章
|
3月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
78 0
|
6月前
|
算法 Java C++
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
61 0
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
|
6月前
|
Python Java 算法
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列
42 0
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列
|
6月前
|
Java
105. 从前序与中序遍历序列构造二叉树 --力扣 --JAVA
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。
59 1
二叉树中和为某一值的路径(剑指offer34 力扣113)Java深度优先遍历
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。
二叉树中和为某一值的路径(剑指offer34 力扣113)Java深度优先遍历
|
算法 Java
序列化二叉树(剑指offer37 力扣297)Java层序遍历
你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。
114 0
序列化二叉树(剑指offer37 力扣297)Java层序遍历
二叉树的最近公共祖先(剑指offer 68 - II)Java深度优先遍历
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
二叉树的最近公共祖先(剑指offer 68 - II)Java深度优先遍历
|
Java
力扣106. 从中序与后序遍历序列构造二叉树Java
力扣106. 从中序与后序遍历序列构造二叉树Java
92 0
力扣108. 将有序数组转换为二叉搜索树Java
108. 将有序数组转换为二叉搜索树
162 0
二叉搜索树的第k大节点(剑指offer 54)Java中序遍历
给定一棵二叉搜索树,请找出其中第 k 大的节点的值。