Java 迭代递归定义树中的所有节点

Java 迭代递归定义树中的所有节点,java,recursion,Java,Recursion,我试图创建一个节点类,我最终将能够用于minimax搜索,但是我在遍历树中的所有节点时遇到了困难(在本例中,对于一个简单到字符串的函数) 下面是递归到字符串方法的定义 public String toString(){ if(!this.isLeaf()){ String text = ""; Iterator<Node<T>> iter = children.iterator();

我试图创建一个节点类,我最终将能够用于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() ;
        }
    }
公共字符串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”循环仍然可以工作。

那么您正在尝试找到树的最大值?还是只访问每个节点一次?访问节点有什么特别的顺序吗?