gpt4 book ai didi

java - 打印树方法中的所有节点

转载 作者:行者123 更新时间:2023-11-30 08:45:42 26 4
gpt4 key购买 nike

我正在为将所有节点添加到数组列表 names 的树创建一个递归方法。此方法无法将叶节点(没有子节点的节点)添加到数组列表 names

它只将根节点和根节点的直接子节点添加到数组列表中。我需要知道出了什么问题才能解决其他递归问题。

private ArrayList<TreeNode> names = new ArrayList<>();
public ArrayList<TreeNode> getAllNodes(){

//BASIS CASES:
names.add(this);

if(isLeaf()){
names.add(this);
return names;
}

//RECURSIVE CASES:
for(TreeNode child : children){
child.getAllNodes();
names.add(child);

}

return names;
}

其他代码:

 //prints the nodes out
ArrayList<TreeNode> theNodes = treeRoot.getAllNodes();
System.out.println("");
for (TreeNode n : theNodes) System.out.print(n.getLabel() + " ");
repaintCanvas(canvas);

//hard coded nodes
treeRoot = new TreeNode(TreeNode.Gender.MALE, "John", null);
itemsToDraw.add(treeRoot);

TreeNode Louis = new TreeNode(TreeNode.Gender.MALE, "Louis", treeRoot);
TreeNode Sue = new TreeNode(TreeNode.Gender.FEMALE, "Sue", treeRoot);
TreeNode Anne = new TreeNode(TreeNode.Gender.FEMALE, "Anne", Sue);
TreeNode Sam = new TreeNode(TreeNode.Gender.MALE, "Sam", Sue);
TreeNode Anne2 = new TreeNode(TreeNode.Gender.FEMALE, "Anne", Sam);
TreeNode Ed = new TreeNode(TreeNode.Gender.MALE, "Ed", Louis);
TreeNode Frank = new TreeNode(TreeNode.Gender.MALE, "Frank", Louis);

输出:

John Louis Sue

最佳答案

我认为基本问题是当您这样做时:

child.getAllNodes();

您没有使用该方法的响应...

也许你打算这样做?

names.addAll(child.getAllNodes());

关于java - 打印树方法中的所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181454/

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