public class TernarySearchTrie { private static class TSTNode{ private String value=null; private TSTNode left; private TSTNode mid; private TSTNode right; private char splitChar; private TSTNode() {} private TSTNode(char c){ splitChar=c; } } private TSTNode root=new TSTNode(); public void addWord(String word) { TSTNode nodeRoot=root; for (int i = 0; i < word.length(); i++) { nodeRoot=getOrCreate(word.charAt(i),nodeRoot); } nodeRoot.value=word; } private TSTNode getOrCreate(char key,TSTNode node) { if(node.mid==null) { node.mid=new TSTNode(key); return node.mid; } TSTNode current=node.mid; while(true) { int dis=key-current.splitChar; if(dis==0) { return current; } else if(dis<0) { if(current.left==null) { current.left=new TSTNode(key); return current.left; } current=current.left; } else { if(current.right==null) { current.right=new TSTNode(key); return current.right; } current=current.right; } } } public String getNode(String word) { TSTNode nodeRoot=root; for (int i = 0; i < word.length(); i++) { nodeRoot=getNode(word.charAt(i),nodeRoot); if(nodeRoot==null) { return null; } } return nodeRoot.value; } private TSTNode getNode(char key,TSTNode node) { if(node.mid==null) { return null; } TSTNode current=node.mid; while(true) { int dis=key-current.splitChar; if(dis==0) { return current; } else if(dis<0) { if(current.left==null) { return null; } current=current.left; } else { if(current.right==null) { return null; } current=current.right; } } } } TernarySearchTrie tree=new TernarySearchTrie(); tree.addWord("is"); tree.addWord("in"); tree.addWord("it"); tree.addWord("be"); tree.addWord("by"); tree.addWord("as"); tree.addWord("at"); tree.addWord("he"); tree.addWord("on"); tree.addWord("or"); tree.addWord("of"); tree.addWord("to"); System.out.println(tree.getNode("is")); System.out.println(tree.getNode("on")); System.out.println(tree.getNode("to"));
三叉Trie树
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:平衡三叉Trie树
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Vue3 创建一个应用
Vue3 创建一个应用
vite vue -
python实现三叉树
最近用python实现了三叉树,觉得挺有意思的,所以分享出来:class Nod
python 开发语言 后端 sed 测试用例 -
Java 三叉链表 表示 二叉树
https://www.bilibili.com/video/BV13C4y187FT?p=81
java 链表 开发语言 3c ide -
java 三叉树 三叉树运营
作为针对Trie树空间优化, 原始论文及网上的代码都没有实现删除操作, 在下补上[1]。出发点是删除子树,没有考虑去清理没有叶子的树枝。
java 三叉树 data structure 子树 3d github -
三叉树 搜索 java 三叉树运营
一、首先要用到软件包 java.util中的接口 List<E>、接口 Queue<E>import java.util.*;以以下叉树为例:/* * 1 * / | \ * 3 2 4 * / | \ /
三叉树 搜索 java java 开发语言 b树 青少年编程