2013-12-07 5 views
0

Я пытаюсь создать класс узла, который в конечном итоге я смогу использовать для минимаксного поиска, однако у меня возникают проблемы с итерацией по всем узлам моего дерева (в этом случай для простой строковой функции).Итерации по всем узлам в рекурсивно определенном дереве

Вот определение метода рекурсивной строки.

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() ; 
     } 
    } 

После прочтения другие ответы, я попытался с помощью интерфейса итератора, как показано в коде выше, но он все еще не работает. Любые предложения будут действительно оценены. (Я также открыт для нерекурсивных методов этого)

+1

Итак, вы пытаетесь найти максимум дерева? или просто посещать каждый узел один раз? любой конкретный порядок посещения узлов? –

ответ

0

Я предполагаю, что вы намеревались конкатенировать дочерние значения, разделенные символом '/' в соответствии с ответом на тома.

Если вы намереваетесь создать строку, более эффективно использовать StringBuffer, потому что в противном случае каждый раз вокруг цикла должна быть назначена новая строка для принятия нового значения, тогда как StringBuffer создается в буфере ,

StringBuffer text = new StringBuffer(); 

for (Node<T> child : children) { 
    text.append('/'); 
    text.append(child.toString()); 
} 
return text.toString; 

Я использовал цикл для каждого стиля, но цикл «while», который вы использовали, все равно будет работать.

+0

Большое спасибо за это – user3078645

2

Возможно, вы имели в виду +=?

text += "/" + child.toString(); 
    ^
Смежные вопросы