我必須爲學校任務創建一個二叉搜索樹的類,而且我必須實現的方法之一是要返回一個全部葉節點值用逗號分隔,如[「葉節點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之前。 –
只是嘗試實施它,如果你沒有成功,讓我知道。 –