简单字典树的实现
字典树特征
根节点不包含字符,除去根节点的每一个节点均包含有一个字符。
从根节点到某一节点,路径上经过的所有节点的字符连接起来就是该节点对应的字符串。
每个节点的所有子节点包含的字符都不相同
字典树基本操作
- 插入
- 查找
- 删除
插入操作
向字典树中插入某个单词。将单词标记为当前单词,将根节点标记为当前节点,执行操作1:
1.当前单词为空,将当前节点标记为单词位置,终止操作;否则取出当前单词的首字符记为X,遍历当前节点的子节点:如果X存在于子节点N,将剩余字符标记为当前单词,将N标记为当前节点,重复操作1,如果X不存在于当前节点的子节点中,那么进入操作2。
2.取出当前单词的首字符记为X,新建一个节点M存储X,M的父节点为当前节点。剩余字符串记为当前单词,如果当前单词为空,将M标记为单词位置,终止操作;否则,将M标记为当前节点,重复操作2。
查找操作
查询指定单词是否在字典树中。将单词标记为当前单词,将根节点标记为当前节点,执行操作1:
1.当前单词为空,那么返回true,即字典树中存在该单词。否则,取出当前单词的首字符,标记为X,遍历当前节点的子节点,如果X存在于子节点N中,将N标记为当前节点,将剩余字符串标记为当前单词,重复操作1;如果X不存在于子节点中,返回false,即字典树中不存在该单词。
删除操作
删除字典树中的某个单词。将单词标记为当前单词,将根节点标记为当前节点,执行操作1:
1.当前单词为空,如果当前节点不为叶子节点,那么取消标记当前节点为单词位置,当前节点为叶子节点,删除该叶子节点即可,然后终止操作。当前单词不为空,取出当前单词的首字符记为X,遍历当前节点的子节点:如果X存在于当前节点的子节点N上,将N标记为当前节点,将剩余字符串记为当前单词,重复过程1;否则删除失败,即单词不在字典树上,终止操作。
python 实现
|
|
输出结果:
|
|