2009-10-31 3 views
0

Я пытаюсь прочитать узел, который найдет самое длинное слово в дереве.Дерево java как найти слово

Мой метод public static int word(Node d). Итак, как мне найти длину этого узла? Я бы просто использовал строку, созданную в классе? Класс, который я использовал бы, инициализирует логическое, String: theWord и children. Вот что я получил:

int newWord = 0; 
int word = d.theWord.length(); 
if (d.isWord) { 
    if (word > newWord) { 
     newWord = word; 
     return longestWord((DTN) d.children); 
    } else { 
     return longestWord((DTN) d.children); 
    } 
} 
return newWord; 
+0

откровенно не мог разобрать из вашего вопроса. вы можете больше узнать о том, используете ли вы качели и даете более подробную информацию. оператор задачи очень туманный –

+0

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

+0

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

ответ

0

Хорошо, есть немного больше информации. Я до сих пор не совсем понятно, на что здесь происходит, но вот еще один удар в то, что я думаю, что это в основном то, что вы могли бы хотеть:

String longestWord(Node d) { 
    String result = d.theWord; 
    for (Node c : d.children) { 
    String w = longestWord(c); 
    if (result.length < w.length) result = w; 
    } 
    return result; 
} 

Это предполагает d.children некоторая коллекция Node с.

+0

Эта функция использует как петли, так и рекурсию; за то, что вы делаете, вам нужно использовать только один из этих двух методов. –

+1

Это загадочное заявление ... – Grumdrig

+0

@R - неправда. Он работает над предположением, что каждый узел имеет список или массив дочерних узлов; т. е. это N-арное дерево, а не двоичное дерево. В этом случае вам нужно перебирать детей, а затем рекурсировать для каждого ... как он это делает. –

0

Это на самом деле не достаточно информации, чтобы идти дальше, но я возьму выстрел в темноте все равно

public static int longest(Node d) { 
    if (d == null) return 0; 
    else return Math.max(longest(d.left), longest(d.right)) + 1; 
} 
+0

что, если я не могу назвать d.left и right? Как класс имеет только строку и логическое значение? – Sam

+0

@Sam - тогда это не дерево. –

+0

как насчет цифрового дерева? – Sam