我必须为学校任务创建一个二叉搜索树的类,而且我必须实现的方法之一是要返回一个全部叶节点值用逗号分隔,如[“叶节点1”,叶节点2,叶节点3]。 从左到右。用递归方法收集二叉树中叶节点的值
我必须解决这个使用递归方法帮扶,我完全空白
这是我迄今为止
public void leafNodes(Node<T> n)
{
if(n.left != null) leafNodes(n.left);
if(n.right != null) leafNodes(n.right);
if(n.left == null && n.right == null)
{
// Do something in here?
}
}
建议后
尝试编辑:
I tried adding it like this:
public ArrayList<String> leafNodes(Node<T> n)
{
ArrayList<String> list = new ArrayList<>();
if(n.left != null) leafNoder(n.left);
if(n.right != null) leafNoder(n.right);
if(n.left == null && n.roight == null)
{
list.add(n.value.toString());
}
return list;
}
现在使用此帮助方法的方法返回一个空字符串。或者只是“[]”。
public String LeafNodeValues()
{
StringJoiner sj = new StringJoiner(", ", "[","]");
if(empty()) return sj.toString();
ArrayList<String> a = leafNodes(rot);
for(int i = 0; i < a.size(); i++)
{
sj.add(a.get(i));
}
return sj.toString();
}
是这样的?
public ArrayList<String> leafNodes(Node<T> n)
{
ArrayList<String> list = new ArrayList<>();
if(n.left != null) list.addAll(leafNoder(n.left));
if(n.right != null) list.addAll(leafNoder(n.right));
if(n.left == null && n.roight == null)
{
list.add(n.value.toString());
}
return list;
}
我在哪里创建数组列表?每次调用方法时,如何解决创建新问题的方法? – Tanner
您必须为每个方法调用创建一个新的空列表,在该方法的第一行中,在ifs之前。 –
只是尝试实施它,如果你没有成功,让我知道。 –