private void DepthFirst(string traveled, IList <char> state, IList <Word> words, bool surpassedLbound = false, string lbound = null, string ubound = null) { var copy = new List <char>(state); if (Value != char.MinValue) { state.Add(Value); } if (EndOfWord) { var word = traveled + new string(state.ToArray()); if ((surpassedLbound && word != lbound) || word != ubound) { words.Add(new Word(word, PostingsAddress)); } } if (LeftChild != null) { LeftChild.DepthFirst(traveled, state, words); } if (RightSibling != null) { RightSibling.DepthFirst(traveled, copy, words); } }
private void DepthFirst(string traveled, IList <char> state, IList <Word> compressed) { var copy = new List <char>(state); if (Value != char.MinValue) { state.Add(Value); } if (EndOfWord) { var value = traveled + new string(state.ToArray()); var word = new Word(value, WordCount, PostingsAddress, Postings); compressed.Add(word); } if (LeftChild != null) { LeftChild.DepthFirst(traveled, state, compressed); } if (RightSibling != null) { RightSibling.DepthFirst(traveled, copy, compressed); } }
private void DepthFirst(string traveled, IList <char> state, IList <Word> compressed) { var copy = new List <char>(state); state.Add(Value); if (EndOfWord) { compressed.Add(new Word(traveled + new string(state.ToArray()))); } if (LeftChild != null) { LeftChild.DepthFirst(traveled, state, compressed); } if (RightSibling != null) { RightSibling.DepthFirst(traveled, copy, compressed); } }