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

无左子树且为父节点左子节点的BST节点中序前驱疑问

二叉搜索树(BST)中序前驱的查找疑问解答

这种情况下,节点𝑥的中序前驱不一定是祖父节点,可能是更远的祖先节点,核心判断逻辑是:

当𝑥无左子树且是父节点的左子节点时,需要沿着父节点向上遍历祖先链,直到找到第一个满足「该节点是其自身父节点的右子节点」的祖先节点(记为A),那么A的父节点就是𝑥的中序前驱;如果遍历到根节点都找不到这样的A,说明𝑥是整棵树的最小节点,不存在中序前驱。

举个具体例子:

100
         /   \
        40    120
       / \
      20  60
         / \
        50  70
       /
      45

节点𝑥=45无左子树,且是父节点50的左子节点:

  • 父节点50大于45,无法作为前驱;
  • 向上遍历到祖父节点60,发现60是其父节点40的右子节点;
  • 此时60的父节点40小于45,因此40就是𝑥=45的中序前驱,而40是𝑥的曾祖父节点,并非祖父。

再看你提供的例子:

50
        /  \
      30    70
     /  \
   20   40
       /
      35

𝑥=35的父节点40是30的右子节点,因此40的父节点30就是前驱,这时候恰好是祖父节点,但这只是一种特殊情况,不是必然结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:34:58