gpt4 book ai didi

java - 打印二叉树中所有根到叶的路径

转载 作者:太空狗 更新时间:2023-10-29 22:36:50 26 4
gpt4 key购买 nike

我正在尝试使用 java 在二叉树中打印所有根到叶的路径。

public void printAllRootToLeafPaths(Node node,ArrayList path) 
{
if(node==null)
{
return;
}
path.add(node.data);

if(node.left==null && node.right==null)
{
System.out.println(path);
return;
}
else
{
printAllRootToLeafPaths(node.left,path);
printAllRootToLeafPaths(node.right,path);
}
}

在主要方法中:

 bst.printAllRootToLeafPaths(root, new ArrayList());

但是它给出了错误的输出。

给定的树:

   5
/ \
/ \
1 8
\ /\
\ / \
3 6 9

预期输出:

[5, 1, 3]

[5, 8, 6]

[5, 8, 9]

但是产生的输出:

[5, 1, 3]

[5, 1, 3, 8, 6]

[5, 1, 3, 8, 6, 9]

有人能想出办法吗...

最佳答案

调用递归方法:

printAllRootToLeafPaths(node.left, new ArrayList(path));
printAllRootToLeafPaths(node.right, new ArrayList(path));

当您传递 path(而不是 new ArrayList(path))时发生的事情是您在所有方法调用中使用单个对象,这意味着,当您返回到原始调用者,该对象的状态与原来不同。

您只需要创建一个新对象并将其初始化为原始值。这样原始对象就不会被修改。

关于java - 打印二叉树中所有根到叶的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14936861/

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