Java 迭代递归定义树中的所有节点
我试图创建一个节点类,我最终将能够用于minimax搜索,但是我在遍历树中的所有节点时遇到了困难(在本例中,对于一个简单到字符串的函数) 下面是递归到字符串方法的定义Java 迭代递归定义树中的所有节点,java,recursion,Java,Recursion,我试图创建一个节点类,我最终将能够用于minimax搜索,但是我在遍历树中的所有节点时遇到了困难(在本例中,对于一个简单到字符串的函数) 下面是递归到字符串方法的定义 public String toString(){ if(!this.isLeaf()){ String text = ""; Iterator<Node<T>> iter = children.iterator();
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() ;
}
}
公共字符串toString(){
如果(!this.isLeaf()){
字符串文本=”;
迭代器iter=children.Iterator();
while(iter.hasNext()){
Node child=iter.next();
text=“/”+child.toString();
}
返回文本;
}否则{
返回货物。toString();
}
}
在阅读了其他答案后,我尝试使用迭代器接口,如上面代码中所示,但仍然不起作用。(我也愿意使用非递归的方法)你是说
+=
text += "/" + child.toString();
^
根据tom的回答,我假设您打算连接由“/”分隔的子值 如果要构建字符串,使用StringBuffer更有效,因为否则每次循环都必须分配一个新字符串以获取新值,而StringBuffer在缓冲区中构建
StringBuffer text = new StringBuffer();
for (Node<T> child : children) {
text.append('/');
text.append(child.toString());
}
return text.toString;
StringBuffer text=new StringBuffer();
用于(节点子节点:子节点){
text.append('/');
text.append(child.toString());
}
返回text.toString;
我已经为每个样式循环使用了一个“while”循环,但是您使用的“while”循环仍然可以工作。那么您正在尝试找到树的最大值?还是只访问每个节点一次?访问节点有什么特别的顺序吗?