海运的博客

PHP实现Trie结构

发布时间:December 24, 2014 // 分类:PHP // 1 Comment

  class Trie{
  public $tree = array();

  public function insert($str){
    $count = strlen($str);
    $T = &$this->tree;
    //关联数组递归各个字符,无则新建
    for($i = 0; $i < $count; $i++){
      $c = $str[$i];
      if (!isset($T[$c]))
        $T[$c] = array();  
      $T = &$T[$c];
    }
  }

  public function remove($chars){
    if($this->find($chars)){    
      $count = strlen($chars);
      $T = &$this->tree;
      for($i = 0;$i < $count;$i++){
        $c = $chars[$i];
        if(count($T[$c]) == 1){     
          unset($T[$c]);
          return true;
        }
        $T = &$T[$c];
      }
    }
  }

  public function find($chars){
    $count = strlen($chars);
    $T = &$this->tree;
    //循环遍历各个字符,如无则返回false
    for($i = 0;$i < $count;$i++){
      $c = $chars[$i];
      if(!array_key_exists($c, $T)){
        return false;
      }
      $T = &$T[$c];
    }
    //否则返回找到
    return true;
  }
}
$t = new Trie();
$t->insert('str');
var_dump($t->find('str'));

更多:
https://github.com/fran6co/phptrie
http://kaiserleib.com/archives/63
http://www.cnblogs.com/endsock/p/3584161.html

标签:none

有一条 关于" PHP实现Trie结构 "的评论

  1. 1

    第9行 $chars 应该为 $str

评论已关闭

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...