2009-10-31 68 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

坦率地說,你不能從你的問題中得到很多。你能否更多地瞭解你是否在使用鞦韆並提供更多細節。問題陳述非常模糊 – 2009-10-31 06:01:15

+0

沒問題,所以方法需要參數中的一個節點,並且我想知道如何找到節點的長度,然後我會如何調用子節點? – Sam 2009-10-31 06:29:18

+0

所以孩子們在節點內的數組中?你可以顯示節點的數據結構嗎? – 2009-10-31 06:48:24

回答

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

該函數使用循環和遞歸;因爲你在做什麼,你只需要使用這兩種方法中的一種。 – 2009-10-31 07:02:00

+1

這是一個令人費解的陳述... – Grumdrig 2009-10-31 07:22:15

+0

@R - 不正確。他正在假設每個節點都有一個或一組子節點;即它是N元樹而不是二叉樹。在這種情況下,你必須迭代孩子,然後爲每個孩子遞歸...就像他正在做的一樣。 – 2009-10-31 07:27:28

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並且對不對?像這個類只有一個字符串和一個布爾值? – Sam 2009-10-31 06:06:51

+0

@Sam - 那麼它不是一棵樹。 – 2009-10-31 06:45:37

+0

數字樹呢? – Sam 2009-10-31 06:48:01