用Trie树实现号码区域查找

  • TrieNode.java
/**

 * 给定一个固定电话号码,找出这个号码对应的区域。固定电话号码都是以0开始的多位数字,可以通过给定电话号码的前缀找出对已ing的区域

 * 如:

 * 0995:新疆:托克逊县

 * 0856:贵州:铜仁

 * 0775:广西:玉林

 * 可以采用数字搜索树算法快速查找电话号码前缀。*/

public final class TrieNode {

    protected TrieNode[] children;//孩子节点

    protected char splitChar;//分隔字符

    protected String area;//电话所属地区信息

    

    protected TrieNode(char splitchar){

        children=new TrieNode[10];

        area=null;

        this.splitChar=splitchar;

    }

    /**

     * 加载词,形成数字搜索树

     * param:string输入的电话号码

     * param:root树根

     * area:所在区域*/

    void addWord(String string, TrieNode root,String area){

        TrieNode tNode=root;

        //第一个字符都是0,作为根节点

        for(int i=1;i
  • TrieTreeTest.java

public class TrieTreeTest {

    public static void main(String args[]){

        TrieNode root=new TrieNode('0');

        root.addWord("0995", root, "新疆:托克逊县");

        root.addWord("0856", root, "贵州:铜仁");

        root.addWord("0775", root, "广西:玉林");

        String result=root.search("0775", root);

        System.out.println("0775:"+result);

        result=root.search("0856", root);

        System.out.println("0856:"+result);

    }

}

你可能感兴趣的:(用Trie树实现号码区域查找)