从给定级别的树中获取元素



我想在树的给定深度/级别获取所有整数键。

我尝试的解决方案如下所示:

public LinkedList<Integer> keysAtDepth(int depth) {
return getGivenLevel(depth, root);
}
private  LinkedList<Integer> getGivenLevel(int depth, Node root) {
LinkedList<Integer> list = new  LinkedList<Integer>();
if (root == null) {
return list;
}
if (depth == 1) {
System.out.println(root.key);
list.add(root.key);
} else if (depth > 1 ) {
getGivenLevel(depth-1, root.left); 
getGivenLevel(depth-1, root.right);
}
return list;
}

但这给我一个空的清单。print工作得很好,但是我怎样才能让它工作,以便我在列表中获取密钥?

由于修改参数在 Java 中不是一个好的做法,因此最小副作用解决方案应替换以下两行:

getGivenLevel(depth-1, root.left); 
getGivenLevel(depth-1, root.right);

跟:

list.addAll(getGivenLevel(depth-1, root.left)); 
list.addAll(getGivenLevel(depth-1, root.right));

代码的问题在于每次调用函数时都会创建list,并且递归调用不会向现有list添加值,而是每次都创建一个新list。将语句放在函数外部LinkedList<Integer> list = new LinkedList<Integer>();,您的代码将按预期工作,或者您甚至可以传递对函数的list引用并向其添加值!

相关内容

  • 没有找到相关文章

最新更新