trie树(字典树)java实现
来源:互联网 发布:小强呼死你软件安卓版 编辑:程序博客网 时间:2024/05/28 17:04
public class Trie{ private Node root; public Trie(){ root = new Node(' '); } public void insert(String word){ if(search(word) == true) return; Node current = root; for(int i = 0; i < word.length(); i++){ Node child = current.subNode(word.charAt(i)); if(child != null){ current = child; } else { current.childList.add(new Node(word.charAt(i))); current = current.subNode(word.charAt(i)); } current.count++; } current.isEnd = true; }
/** *怎么判断单词是否存在? *被判断的单词的字母与根节点下的子节点的字母进行比较,直到匹配到两者最后一个字母相同,并且最后一个节点的isEnd标记为true */ public boolean search(String word){ Node current = root; for(int i = 0; i < word.length(); i++){ if(current.subNode(word.charAt(i)) == null) return false; else current = current.subNode(word.charAt(i)); } if (current.isEnd == true) return true; else return false; } public void deleteWord(String word){if(search(word) == false) return;Node current = root;for(char c : word.toCharArray()) { Node child = current.subNode(c);if(child.count == 1) {current.childList.remove(child);return;} else {child.count--;current = child;}}current.isEnd = false;}
public static void main(String[] args) {Trie trie = new Trie();//trie.insert("ball");trie.insert("balls");trie.deleteWord("balls");trie.insert("sense");// testing deletionSystem.out.println(trie.search("balls"));System.out.println(trie.search("ba"));trie.deleteWord("balls");System.out.println(trie.search("balls"));System.out.println(trie.search("ball"));}}
class Node { char content; // 节点包含的内容 boolean isEnd; // 是否在该节点行成过一个单词 int count; // 统计该节点的字符被几个单词共享 LinkedList<Node> childList; // 子节点的集合 //初始化 public Node(char c){ childList = new LinkedList<Node>(); isEnd = false; content = c; count = 0; } //查找子节点中是否有内容为x的子节点,有则返回该子节点,否则返回空 public Node subNode(char c){ if(childList != null){ for(Node eachChild : childList){ if(eachChild.content == c){ return eachChild; } } } return null; }}
0 0
- trie字典树实现
- trie树(字典树)java实现
- 字典树(Trie)的java实现
- Trie(字典树)的Java实现
- 字典树 Trie 的实现
- trie-字典树及实现
- C++实现Trie字典树
- 7. implement-trie(实现trie字典树)
- PHP实现Trie树(字典树)
- 字典树(Trie树) C++实现
- trie树(字典树)实现 C++
- Trie树(字典树)的实现
- Trie树(字典树)的实现
- trie(字典树)的双数组实现
- 一个Trie字典树的简单实现
- 实现字典树Trie的基本操作
- 字典树(Trie)的简单实现
- Java基础 - 字典树(Trie树)
- 小乌龟进行项目的分支与合并
- Android 兼容性介绍之setBackground
- java线程——多个线程之间切换执行
- JavaScript(一)
- 7、网页上的div居中
- trie树(字典树)java实现
- setContentView()调用SurfaceView布局文件出错的解决方法
- [swift学习之五]类练习
- Android布局常见异常错误
- 调用android系统相机拍照并保存
- GestureDetector
- ECLIPSE 设置 UTF8
- QTreeView三态checkbox代码
- Picasso创建圆形图像