添加多個唯一的孩子我是C#初學者,此刻我試圖用不同的問題來挑戰自己。在多個層面與一個或多個循環和「乾淨」的代碼
目前我正在試圖建立一個Web應用程序,你可以輸入字母和通配符後可能的單詞進行搜索。
海槽這個以前的問題我已經決定要建立一個包含40萬個,從字+字母生成一個特里。稍後,我將根據字母和通配符輸入搜索Trie以查找可能的單詞匹配。
我已經建立了兩個類,在特里一個代表一個節點,一個代表全特里。
我目前處於停滯狀態,我的問題是,我想多生幾個孩子,多層次增加了特里和每個孩子必須是潮頭。
這樣做手工將是這個樣子:
//Level 1
Root.Children.Add(new TrieNode(Letter, false, new List<TrieNode>()));
//Level 2
Root.Children[0].Children.Add(new TrieNode(Letter, false, new List<TrieNode>()));
//Level 3
Root.Children[0].Children[0].Children.Add(new TrieNode(Letter, false, new List<TrieNode>()));
問題是,我想與一個或多個環路增加孩子和做這種方式似乎有點「錯誤」:
LetterArray = Word.ToCharArray();
int level = 0;
foreach (char Letter in LetterArray)
{
//Level 1
if (level == 0)
Root.Children.Add(new TrieNode(Letter, false, new List<TrieNode>()));
//Level 2
if (level == 1)
Root.Children[0].Children.Add(new TrieNode(Letter, false, new List<TrieNode>()));
//Level 3
if (level == 2)
Root.Children[0].Children[0].Children.Add(new TrieNode(Letter, false, new List<TrieNode>()));
level++;
}
我需要的是一個或多個具有「乾淨」代碼的循環,認爲你可以幫助我嗎? 對於後來可以搜索到的Trie,我認爲這些信件需要按順序排列。 以下是我的其他相關問題:Question 1,Question 2。
這裏是我的TrieNode類:
public class TrieNode
{
private char _Letter;
private bool _IsEndOfWord;
private List<TrieNode> _Children;
public char Letter {
get { return _Letter; }
set { _Letter = value; }
}
public bool IsEndOfWord {
get { return _IsEndOfWord; }
set { _IsEndOfWord = value; }
}
public List<TrieNode> Children {
get { return _Children; }
set { _Children = value; }
}
public TrieNode(char letter, bool isEndOfWord, List<TrieNode> children) {
Letter = letter;
IsEndOfWord = isEndOfWord;
Children = children;
}
}
...這是我的特里類:
public class Trie
{
private TrieNode _Root;
public TrieNode Root
{
get { return _Root; }
set { _Root = value; }
}
public Trie(List<string> Words)
{
Root = new TrieNode('^', false, new List<TrieNode>());
char[] LetterArray;
foreach (String Word in Words)
{
LetterArray = Word.ToCharArray();
foreach (char Letter in LetterArray)
{
// Here is where I want to add nodes to my Trie
}
}
}
}
順便說一句,因爲你使用後備值沒有其他邏輯,我建議你使用的短版:'公共字符字母{獲得;組; }','public bool IsEndOfWord {get;組; }','公開名單孩子{get;組; }'。 –
ANeves
@ANeves哦,我明白了,非常感謝那個輸入:D –