23.二叉搜索树的后序遍历序列(不明白边界条件)

//最后一个元素是根节点root;
//除去root后的序列,前面是根节点的左子树left,后面是根节点的右子树right;
//左子树序列一定都要比root小,右子树序列一定都要比root大.
//对左子树和右子树的序列同样满足以上三点
function VerifySquenceOfBST(sequence)
{
    let result,l1;
    l1=sequence.length;
if(l1==0) return false;
if(l1==1) return true;
result=Help(sequence,0,l1-1);
    return result;
}
function Help(sequence,start,end)
{

let root=sequence[end];
let i=end;
    //该根节点只有左子树或者右子树的情况,边界条件一直遍历
    if(start>=end) return true;
    //找到左右子树临界点i
    while(sequence[i-1]>root&&i>start) i--;
    //注意边界条件j为什么是i-1
    for(let j=i-1;j>=start;j--){
    //若右子树序列里存在小于root的节点,返回false
        if(sequence[j]>root){
        return false;
        }
    }

    //判断出除了根节点以外的:左子树和右子树
    return Help(sequence,start,i-1) && Help(sequence,i,end-1);
}
module.exports = {
    VerifySquenceOfBST : VerifySquenceOfBST
};

🆘🆘🆘🆘哪个大佬来告诉我:
边界条件j为什么是i-1
for(let j=i-1;j>=start;j–){
//若右子树序列里存在小于root的节点,返回false
if(sequence[j]>root){
return false;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值