代码改变世界

经典数据结构之字母树

2008-08-22 23:09  JimLiu  阅读(2426)  评论(2编辑  收藏  举报

字母树(TrieTree)是一种数据结构,可以实现O(s.length)的时间插入、删除、查找。

相比映射(map),字母树不存在哈希碰撞,实现相对简单。

“字母”其实是个泛指概念,字母树的索引可以是任何的串,只要组成串的元素是有限个。但如果组成串的元素太多,就不是很适合用字母树了,因为可能会造成大量空间浪费,但是时间性能还是很稳定。

以下是我自己实现的一个C#版本的泛型字母树,代码来自我做ACM题目时候用C++写的粗糙版本(只针对一个题目写的版本),没经过严格测试,各位朋友如果发现错误,还望不吝赐教。

/// <summary>
/// 泛型字母树,忽略大小写
/// </summary>
/// <typeparam name="T">泛型类型</typeparam>

public class TrieTree<T> {
    
private class TrieNode {
        
fields

        
constructors

        
properties
    }


    
fields

    
private methods

    
public methods

    
indexer
}