字典树


字典树(Trie Tree)

三向单词查找树(TST)

字典树又叫单词查找树,三向单词查找树中,每个节点都含有一个字符,三条链接和一个值。这三条链接分别对应着当前字母小于,等于和大于节点字母的所有键。三向单词查找树可以避免R向单词查找树过度的空间消耗.查找和插入时,首先比较键的首字母和根节点的字母,如果键的首字母较小,就选择左链接;如果较大,就选择右链接;如果相等就选择中链接。然后递归的使用相同的算法。查找时,如果遇到一个空链接或者当前键结束时节点的值为空,那么未命中;如果键结束时节点的值非空则查找命中。

package 字典树;

import javafx.concurrent.WorkerStateEvent;

import java.util.ArrayList;
import java.util.List;

/**
 * 三向单词查找树
 */
public class TST {
    Node head=null;
    public List tree=new ArrayList<>();
    class Node{//节点
        char ch;
        Node left,mid,right;//左中右分支
        int val;
      Node(){
          this.val=-1;
      }
      Node(char ch){
          this.ch=ch;
          this.val=-1;
      }
    }

    public void put(String[] words){

        for(int i=0;iroot.ch){
            root.right=put(root.right,word,index,value);
        }else if(indexroot.ch){//字符大于该节点字符  则从该节点左子节点查找
            return get(root.right,word,index);
        }else if(index

R向单词查找树

package 字典树;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

public class TrieTree {



    public List tree=new ArrayList<>();



    public  void insert(String word, int index){//往字典树里插单词
        int len=word.length(),cursor=0;//从字典树最开头的那个node节点开始往下存
        for(int i=0;i