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

Java:如何找出破坏二叉搜索树的违规节点?

问题描述

我正在实现checkBSTValidity方法,该方法需返回破坏二叉搜索树(BST)的节点,若不存在违规节点则返回null。目前部分测试用例通过,但有部分测试用例失败,不清楚原因。

我的代码

public static Node checkBSTValidity(Node rootNode) {
    // Your code here (remove the placeholder line below)
    if (rootNode == null) {
       return null;
    }
    
    // Check if left child node is greater than root node
    if (rootNode.left != null && maxValue(rootNode.left) >= rootNode.key) {
       Node node = new Node(maxValue(rootNode.left));
       return node;
    }
    
    // Check if right child node is less than root node
    if (rootNode.right != null && minValue(rootNode.right) <= rootNode.key) {
       Node node = new Node(minValue(rootNode.right));
       return node;
    }
    
    
    Node leftResult = checkBSTValidity(rootNode.left);
    
    if (leftResult != null) {
       return leftResult;
    }
    
    return checkBSTValidity(rootNode.right);
    
}

测试失败提示

提交上述代码后,系统提示:

  • 存在左/右子节点指向祖先的无效树时,程序无输出;
  • 左子节点键值大于父节点键值的无效树未返回正确节点。

补充说明

本次挑战要求实现checkBSTValidity()方法,该方法接收树的根节点作为参数,返回破坏树结构的违规节点。违规节点分为三类:

  • 位于某祖先节点左子树中,但键值小于该祖先节点的节点
  • 位于某祖先节点右子树中,但键值大于该祖先节点的节点
  • left或right字段指向祖先节点的节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:17:42