저는 C# 초보자이며 지금은 다른 문제로 스스로에게 도전하려고합니다.하나 이상의 루프와 "깨끗한"코드를 사용하여 여러 수준의 여러 고유 한 자식 추가
현재 문자 및 와일드 카드를 입력하여 가능한 단어를 검색 할 수있는 웹 응용 프로그램을 구축하려고합니다.
이 질문에 대한 이전 질문 내가 400k + 단어에서 생성 된 편지를 포함하는 Trie를 작성하기로 결정했습니다. 나중에 Trie에서 문자 및 와일드 카드 입력에 따라 가능한 단어 일치 항목을 검색합니다.
저는 두 개의 클래스를 만들었습니다. 하나는 Trie에 하나의 노드를 나타내고 다른 하나는 Trie를 나타냅니다.
저는 현재 정지 상태에 있습니다. 제 문제는 여러 레벨의 Trie에 여러 명의 자녀를 추가하고 모든 어린이가 uniqe이어야한다는 것입니다.
수동과 같이 보일 것이다 이렇게 :
//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.
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
}
}
}
}
Btw, 당신은 다른 값을 사용하는 논리가 없기 때문에 짧은 버전을 사용하는 것이 좋습니다. public char Letter {get; 세트; }','public bool IsEndOfWord {get; 세트; }','public List 아이들 {get; 세트; }'. –
ANeves
@ANeves 오, 알겠습니다, 감사합니다. –