【发布时间】:2015-01-04 00:34:59
【问题描述】:
我在尝试创建 TreeNode 方法的打印路径时有点卡住了。不太确定我哪里出错了,但我认为它可能在第二个else。
代码:
public static ArrayList<Integer> printPath(TreeNode node, ArrayList<Integer> path, int value) {
if (node == null) {
return path;
} else {
if (node.data == value) {
path.add(value);
return path;
} else {
path.add(node.data);
printPath(node.left, path, value);
printPath(node.right, path, value);
}
}
return path;
}
目前我得到的输出为[20, 8, 4, 12, 22],而我应该只得到[20,8,12]。
我在图中添加了二叉搜索树,路径为空ArrayList,值为12
【问题讨论】:
-
得到
[20, 8, 4, 12, 22]时传递给方法的参数是什么? -
@i_turo 更新问题!
-
不应该是
12的路径只有[20, 8, 12]吗? -
如果不测试,如果第一次递归调用已经找到
value,算法必然也会执行第二次递归调用(第二次else)。