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

时间:2013-12-07 22:35:37

标签: java recursion

我正在尝试创建一个我最终能够用于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界面,如上面的代码所示,但它仍然无法正常工作。 (我也对这种非递归方法持开放态度)

2 个答案:

答案 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'循环仍然可以正常工作。