60、PHP 实现 单词查找树算法

题目: PHP 实现 单词查找树算法

描述:

php 复制代码
class TrieST
{
	private $_root=null;

    /**
     *查找单词$key
     * 
     */
	public function search(string $key){
		 $node=$this->_search($this->_root,$key,0);
		 if(is_null($node)){
		 	return null;
		 }
		 return $node->getVal();
	}

	private function _search($node,string $key,int $keyIndex){
		if(is_null($node)){
			return null;
		}
		if(strlen($key)==$keyIndex){
			return $node;
		}
		$nextNodePos=$key[$keyIndex];
		return $this->_search($node->getNextNode($nextNodePos),$key,++$keyIndex);
	}

    /**
     * 添加单词
     * @param string key 要添加的单词
     */
	public function put(string $key,$value){
		if(is_null($this->_root)){
			$this->_root=$this->_put($this->_root,$key,$value,0);
		}
		$this->_put($this->_root,$key,$value,0);
	}

	private function _put($node,string $key,$value,int $keyIndex){
		if(is_null($node)){
			$node=new Node();
		}
		if(strlen($key)==$keyIndex){
			$node->setVal($value);
			return $node;
		}
        
        $nextNodePos=$key[$keyIndex];
        $nextNode=$this->_put($node->getNextNode($nextNodePos),$key,$value,++$keyIndex);
		$node->setNextNode($nextNodePos,$nextNode);
		return $node;
	}

	public function keyWithPrefix(string $pre){

	}
}
相关推荐
DJ斯特拉9 分钟前
自定义jar包导入maven&&注册第三方bean
java·maven·jar
wefg113 分钟前
【算法】算数基本定理、分解质因数
算法
j_xxx404_16 分钟前
力扣困难算法精解:串联所有单词的子串与最小覆盖子串
java·开发语言·c++·算法·leetcode·哈希算法
挠头猴子19 分钟前
一个数组去重,两个数组找不同或相同
数据结构·算法
big_rabbit050232 分钟前
[算法][力扣167]Two Sum II
算法·leetcode·职场和发展
会编程的土豆37 分钟前
Set 深度解析:去重、唯一性与你的智能抽屉
java·开发语言·后端·数据结构与算法
颜酱41 分钟前
二分图核心原理与判定算法
javascript·后端·算法
java1234_小锋1 小时前
Java高频面试题:JVM内存为什么要分代?
java·开发语言·jvm
筱砚.1 小时前
C++——lambda
开发语言·c++·算法
两个人的幸福online1 小时前
php开发者 需要 协程吗
android·开发语言·php