博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 二叉树 二叉排序树实现
阅读量:5142 次
发布时间:2019-06-13

本文共 3209 字,大约阅读时间需要 10 分钟。

k = $k; $this->left = $left; $this->right = $right; } public function isEmpty(){ return !isset($this->k); } public function getKey(){ return isset($this->k) ? $this->k : false; } public function setKey($k){ if(!$this->isEmpty()) return ; $this->k = $k; $this->left = new Tree(); $this->right = new Tree(); return true; } public function deleteKey(){ if(!$this->isLeaf()) return false; $ret = $this->k; $this->k = null; $this->left = null; $this->right = null; return $ret; } public function setLeftKey( Tree $obj){ if( $this->left || !$this->left->isEmpty()) return false; $this->left = $obj; } public function delLeftKey(){ if($this->isEmpty()) return; $ret = $this->left ; $this->left = new Tree(); return $ret; } public function setRightKey( Tree $obj){ if( $this->left || !$this->left->isEmpty()) return false; $this->left = $obj; } public function delRightKey(){ if($this->isEmpty()) return; $ret = $this->left ; $this->left = new Tree(); return $ret; } }/** * 二叉树排序 * @author: xiaojiang * */class bTree extends Tree{ static public function initbTree($array){ $root = new bTree(); foreach($array as $val){ $root->insert($val); } return $root; } public function compare($obj){ return $this->k - $obj; } public function contain($obj){ if ($this->isEmpty()) return false; $diff = $this->compare($obj); if($diff == 0){ return true; }else if($diff > 0){ return $this->right->contain($obj); }else { return $this->left->contain($obj); } } public function insert($obj){ if($this->isEmpty()){ $this->setKey($obj); }else{ $diff = $this->compare($obj); if($diff > 0){ $this->left->insert($obj); }else{ $this->right->insert($obj); } } $this->_afterInsert(); } public function findMax(){ if($this->isEmpty()) return; if(!$this->right->isEmpty()) return $this->right->findMax(); else return $this->k; } public function findMin(){ if($this->isEmpty()) return ; if(!$this->left->isEmpty()) return $this->left->findMin(); else return $this->k; } public function setKey($k){ if(!$this->isEmpty()) return ; $this->k = $k; $this->left = new bTree(); $this->right = new bTree(); return true; } protected function _afterInsert(){}}$arr = array(1,5,4,5,10);$btree = bTree::initbTree($arr);echo $btree->findMax(); // 10 echo "
";echo $btree->findMin(); // 1

 

非常适用于多数字排序。。避免了批量循环的重复判断··· 

转载于:https://www.cnblogs.com/glory-jzx/p/3501178.html

你可能感兴趣的文章
[转]vi 常用命令行
查看>>
2011-4-12学习总结
查看>>
【Finish】Python Day 9
查看>>
css3实现漂亮的按钮链接
查看>>
最大矩形面积
查看>>
[python基础] python 2与python 3的区别,一个关于对象的未知的坑
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
Enterprise Library 加密应用程序块的设计
查看>>
深度剖析post和get的区别
查看>>
云的世界
查看>>
WPF border属性
查看>>
初识DetNet:确定性网络的前世今生
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
linux下启动tomcat----Cannot find ./catalina.sh
查看>>
adb的配置
查看>>
MATLAB基础入门笔记
查看>>
进程、线程、应用程序之间的关系
查看>>
20171020java学习总结——execl 批量导入
查看>>
如何自绘树形控件(QQ好友列表)
查看>>
web异步开发——ajax
查看>>