• 三叉Trie树


    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"));


    
    
  • 相关阅读:
    python 发包爬取中国移动充值页面---可判断手机号是否异常
    python利用selenium和safari浏览器驱动实现新浪微博自动点赞 Demo
    Django学习报错记录
    nginx和tomcat的区别
    Mac主机映射到域名
    mac下eclipse安装svn插件-subclipse
    移动端——等分,居中
    移动端——重置样式
    M端页面-绝对定位布局
    jquery-练习-折叠效果
  • 原文地址:https://www.cnblogs.com/i80386/p/2486593.html
Copyright © 2020-2023  润新知