定义Trie结构,并实现添加元素方法!
import java.util.TreeMap; public class Trie { //使用内部类定义节点类 private class Node{ public boolean isWord;//标记一个节点是否一个单词的结束字符 public TreeMap<Character, Node> next;//存储下一个节点,一个节点有若干个孩子节点【多叉树】 public Node(boolean isWord){//在构造函数中初始化当前节点 this.isWord = isWord; next = new TreeMap<>(); } public Node(){ this(false); } } private Node root;//持有一个根结点 private int size;//记录一棵Trie树的单词数量【以单词为单位,而不是字符】 public Trie(){ root = new Node(); size = 0; } // 获得Trie中存储的单词数量 public int getSize(){ return size; } // 向Trie中添加一个新的单词word public void add(String word){ Node cur = root;// 将当前节点初始化为根节点 for(int i = 0 ; i < word.length() ; i ++){ char c = word.charAt(i); if(cur.next.get(c) == null) cur.next.put(c, new Node()); cur = cur.next.get(c); } // 如果当前节点不是一个单词的结束字符,那么把当前节点标记为单词的结束字符 if(!cur.isWord){ cur.isWord = true; size ++; } } }
10-2 Trie字典树基础【定义Trie、向Trie添加元素】
原文:https://www.cnblogs.com/lpzh/p/12551535.html