You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

我寻找二叉搜索树中序前驱的方法存在什么问题?

中序前驱查找代码及思路
void inorderPredecessor(Node* root, Node* &pre,int key){
    if(root == NULL ) return ;

    if(root -> data == key){
        inorderPredecessor(root ->left , pre , key);
    }else if(root -> data > key){
        inorderPredecessor(root -> left ,pre ,key);
    }else{
        if(pre == NULL)
            pre = root;
        else if(pre -> data > root -> data)
            pre = root;
        inorderPredecessor(root -> right , pre ,key);    
    }
}

思路说明

  1. 若当前节点等于目标节点,递归遍历其左子树——左子树节点值均小于目标节点,前驱应存在于此。
  2. 若当前节点值大于目标节点,递归遍历其左子树,继续定位目标节点。
  3. 若当前节点值小于目标节点,检查pre变量:
    • 若pre为空,将当前节点赋值给pre
    • 若pre不为空,保留值更小的节点
    • 完成判断后递归遍历当前节点的右子树

我已经多次进行干运行,但仍未找到代码中的错误。

内容的提问来源于stack exchange,提问作者abhinav550

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:13:10