JAVA学习之路05——数据结构—>字典树

字典树

public class Tire {
//定义节点
	private class Node{	
		boolean isWord=false;
		TreeMap next;
		public Node() {
			next=new TreeMap<>();
		}
	}
	Node root;//根节点
	int size;//节点个数
	//构造方法
	public Tire() {
		root=new Node();
		size=0;
	}
	//添加一个节点
	public void add(String word) {
		add(root,word,0);
	}
	private void add(Node preRoot,String words,int index) {
		//递归到底的情况
		if(index==words.length()) {
			if(preRoot.isWord==false)
				size++;
			preRoot.isWord=true;
			return;
		}
		Character c=words.charAt(index);
		//当前根是否已经存在指向下一个字符的节点
		if(preRoot.next.get(c)==null)
			preRoot.next.put(c, new Node());//不存在的话添加一个新节点
		add(preRoot.next.get(c),words,index+1);
	}
	//字典树中是否包含某个单词
	public boolean contains(String word) {
		Node cur=root;
		for(int i=0;i

你可能感兴趣的:(JAVA学习之路05——数据结构—>字典树)