我完全坚持这个问题,不知道从哪里开始。它失败了我给它的每一个测试,但我不知道如何解决它。说明是: 从原始树中删除深度k以下的所有子树
相关信息: - 不要更改Node类。 - 请勿更改任何功能的第一行:名称,参数,类型。 您可以添加新功能,但不要删除任何内容 - 函数必须是递归的 - 没有循环 - 每个函数必须只有一个递归辅助函数,您可以添加它 - 每个函数必须是独立的 - 不要调用助手以外的任何函数 - 没有字段(在函数外声明的变量)
如果您认为我遗漏了任何信息/代码,请告知我们。
相关代码:
private Node root;
private static class Node {
public final int key;
public Node left, right;
public Node(int key) { this.key = key; }
}
public void removeBelowDepth(int k) {
removeBelowDepthHelper(root, 0, k);
}
private void removeBelowDepthHelper(Node node, int currentDepth, int k) {
if (node == null) return;
if (currentDepth == k) {
node = null;
return;
}
removeBelowDepthHelper(node.left, currentDepth + 1, k);
removeBelowDepthHelper(node.right, currentDepth + 1, k);
}
答案 0 :(得分:2)
我接受了AJ的建议,只是改变了空调,它完美无缺!非常感谢你们!
public void removeBelowDepth(int k) {
removeBelowDepthHelper(root, 0, k);
}
private void removeBelowDepthHelper(Node node, int currentDepth, int k) {
if (node == null) return;
if (currentDepth == k) {
node.left = null;
node.right = null;
return;
}
removeBelowDepthHelper(node.left, currentDepth + 1, k);
removeBelowDepthHelper(node.right, currentDepth + 1, k);
}