剑指offer 二叉搜索树的后序遍历

该博客讨论了一种使用递归方法来验证给定序列是否能构成一个二叉搜索树的算法。代码实现中,通过遍历序列并找到合适的根节点位置,然后分别对左右子序列进行递归验证,确保所有左子序列的元素小于根节点,所有右子序列的元素大于根节点,以此来确认序列符合二叉搜索树的性质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

在这里插入图片描述

思路

使用递归的方法
一个树,左子树是二叉搜索,右子树是二叉搜索,那么只要左边的都比root小,右边的都比root大那么他就是一个二叉搜索树。
结束条件是没有节点和一个节点的时候都是二叉搜索树

代码


import java.util.*;
public class Solution {
    
     public boolean VerifySquenceOfBST(int [] sequence){
           int num=sequence.length;
          if(num==0)return false;
         return VerifySquenceOfBST_part(sequence);
         
    }
    public boolean VerifySquenceOfBST_part(int [] sequence) {
        
        int num=sequence.length;
        if(num==0||num==1)return true;
        int index=-1;//看一下index的初值应该是什么,=num可以使得当前面只有比跟小的数的时候不用考虑到之后下面一个循环
        for(int i=0;i<num;i++){
            if(sequence[i]>=sequence[num-1]){
                 index=i;
                break;
                
            }
               
            }
        boolean flag=true;
        for(int i=index;i<num-1;i++){
            if(sequence[i]<sequence[num-1])
                flag=false;
            
            }
        return flag&&VerifySquenceOfBST_part(Arrays.copyOfRange(sequence,index,num-1))&&VerifySquenceOfBST_part(Arrays.copyOfRange(sequence,0,index));
    
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值