[英]Print all nodes in a tree method
我正在为将所有节点添加到数组列表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);
输出:
约翰·路易斯·苏
我相信基本问题是当你这样做时:
child.getAllNodes();
您没有使用该方法的响应...
也许你打算这样做?
names.addAll(child.getAllNodes());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.