gpt4 book ai didi

java - 递归删除 BST

转载 作者:行者123 更新时间:2023-12-01 21:08:31 25 4
gpt4 key购买 nike

我有一个二叉搜索树(BST),并且想要在达到一定深度后修剪树。当尝试遍历树并将超过所需深度的节点设置为 null 时,我遇到了 NullPointerException 。

我在这里所做的事情的逻辑正确吗?这似乎是一个非常简单的问题,但我似乎无法理解导致此错误的原因。

public void clip(int d) {
int counter = 0;
clip_helper(d, root, counter);
}

public void clip_helper(int depth, Node n, int c) {

if (n != null) {
c++;
if (c == depth) {
n.left = null;
n.right = null;
}
}
clip_helper(depth, n.left, c);
clip_helper(depth, n.right, c);
}

*还应该补充一点,我对递归解决方案相当陌生,所以我可能会遗漏一些明显明显的东西。

最佳答案

clip_helper(depth, n.left, c);
clip_helper(depth, n.right, c);

这些行会导致 NullPointer 异常,因为您的程序永远不会结束即使节点 n 为 null,它仍然会向左和向右移动,从而导致此情况

要解决这个问题,只需在代码顶部添加一个空检查条件

if(n==null)
return;

关于java - 递归删除 BST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41736586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com