我正在尝试创建一个我最终能够用于minimax搜索的节点类,但是我无法迭代树中的所有节点(在这种情况下是一个简单的字符串函数)。
这是递归到字符串方法的定义。
public String toString(){
if(!this.isLeaf()){
String text = "";
Iterator<Node<T>> iter = children.iterator();
while(iter.hasNext()){
Node child = iter.next();
text = "/" + child.toString();
}
return text;
}else{
return cargo.toString() ;
}
}
在阅读其他答案后,我尝试使用Iterator界面,如上面的代码所示,但它仍然无法正常工作。 (我也对这种非递归方法持开放态度)
答案 0 :(得分:2)
您的意思是+=
吗?
text += "/" + child.toString();
^
答案 1 :(得分:0)
我认为你打算根据汤姆的答案连接用'/'分隔的子值。
如果您打算构建一个字符串,使用StringBuffer会更有效,因为否则每次循环时都必须分配一个新的String来获取新值,而StringBuffer则在缓冲区中构建。
StringBuffer text = new StringBuffer();
for (Node<T> child : children) {
text.append('/');
text.append(child.toString());
}
return text.toString;
我使用了for-each样式循环,但你使用的'while'循环仍然可以正常工作。