国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > 头条 > php二叉查找树的使用

php二叉查找树的使用

php二叉查找树

头像

小妮浅浅

2021-03-18 09:42:104264浏览 · 0收藏 · 0评论

本文操作系统:windows7系统、PHP5.6版本、DELL G3电脑。

1.概念

二叉查找树,也称二叉搜索树、有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树:

1)所有子树上面的左节点的值都比根结点要小,右节点的值都比根结点要大

2)任意结点的左右子树也都是二叉查找树

3)通过中序遍历,将得到的是一个有序的数列

2.特性

若左子树不为空,则左子树上所有结点的值均小于它的根结点的值;

若右子树不为空,则右子树上所有结点的值均大于或等于它的根结点的值;

它的左、右子树也分别为二叉查找树。

3.实例

<?php
class Node{
private $num;//学生学号
private $name;//学生姓名
private $scoreChinese;//学生语文成绩
private $scoreMath;//数学成绩
private $scoreEnglish;//英语成绩
private $left;
private $right;
public function __construct(){
$this->left  = null;
$this->right = null;
}
public function __set($key,$value){
$this->$key = $value;
}
public function __get($key){
if(isset($this->$key)){
return $this->$key;
}
}
}
class Tree{
private $top;//树顶节点
public function __construct($array){
//生成树
$falses = $this->makeTree($array);
$this->readTree();
}
public function makeTree($array){
if(empty($array)){
$this->top = null;
return;
}
//选择树顶节点
$temp = $array[floor(count($array)/2)];
$this->top->num   = $temp['num'];
$this->top->name   = $temp['name'];
$this->top->scoreChinese = $temp['scoreChinese'];
$this->top->scoreMath  = $temp['scoreMath'];
$this->top->scoreEnglish = $temp['scoreEnglish'];
$this->top->left   = null;
$this->top->right   = null;
unset($array[floor(count($array)/2)]);
$false  = 0;//建树失败的节点
foreach($array as $value){
if(false == $this->insert($value)){
$false++;
}
}
}
/**
插入节点
*/
public function insert($info){
$aNode = new Node();
$aNode->num      = $info['num'];
$aNode->name   = $info['name'];
$aNode->scoreChinese = $info['scoreChinese'];
$aNode->scoreMath    = $info['scoreMath'];
$aNode->scoreEnglish = $info['scoreEnglish'];
$aNode->left   = null;
$aNode->right   = null;
if(null == $this->top){
$this->top = $aNode;
return;
}
$nowNode = $this->top;
while(true){
if($nowNode->num == $aNode->num){
return false;
}elseif($nowNode->num>$aNode->num && null == $nowNode->left){
$nowNode->left = $aNode;
return true;
}elseif($nowNode->num<$aNode->num && null == $nowNode->right){
$nowNode->right = $aNode;
return true;
}elseif($nowNode->num>$aNode->num && $nowNode->left != null){
$nowNode = $nowNode->left;
}elseif($nowNode->num<$aNode->num && $nowNode->right != null){
$nowNode = $nowNode->right;
}
}
}
/**
查询节点
*/
public function search($num){
$nowNode = $this->top;
while(true){
if($nowNode->num == $num){
return $nowNode;
}elseif($nowNode->num>$num && null == $nowNode->left){
return null;
}elseif($nowNode->num<$num && null == $nowNode->right){
return null;
}elseif($nowNode->num>$num && $nowNode->left!=null){
$nowNode = $nowNode->left;
}elseif($nowNode->num<$num && $nowNode->right!=null){
$nowNode = $nowNode->right;
}
}
}
/**
树是否为空
*/
public function isEmpty(){
if(is_null($this->top)){
return true;
}else{
return false;
}
}
/**
中序便利树
*/
public function readTree(){
$result = array();
$this->read($this->top,$result);
return $result;
}
private function read($nowNode,&$result){
if(null != $nowNode->left){
$this->read($nowNode->left,$result);
}
array_push($result,$nowNode);
if(null != $nowNode->right){
$this->read($nowNode->right,$result);
}
}
}
?>

以上就是php二叉查找树的使用,相信大家对这种名称有些新奇的算法比较感兴趣。在学会了相关的用法后,赶快动手尝试下它的使用吧。更多php学习指路:php数组

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

《互换人妻HD中字》| 欧美| 麻花视频3.2.2| 《后宫狂热》动浸全集完整 | 白丝袜精华液抹在脚上的功效| 成都私人情侣免费看电视剧的软件| 欧美大片PPT免费大全| EXO妈妈MV高清在线观看| 快拨出我是你母亲的歌曲播放| 男人把J8放进女人的P里| 适合深夜看的脸红的小说| 卢致亘| 黑料吃瓜| 《交换做爰》在线观看| 电影《满足2》完整版在线观看| 美女和帅哥一起努力生产豆浆的视..| 小叔子从后面抱住女主电视剧 | 高压监狱2法国1时43分| 妈妈你真棒插曲最后接吻是谁 | 爱上兄弟的母亲6集免费观看| 器材室轮-J-(4)对着镜子| 成年二人世界免费观看电视剧| 妈妈你真棒插曲MV| 国产免费观看高清电视剧| 一边做饭一边狂躁的原因分析| A片| 上课别穿内裤方便我C电视剧 | 家公给我治疗5中字| 人狗大战5高清正版免费观看| 嫩草精产一二三产区| 少妇激情偷公乱140章| 蜜桃成熟了免费观看完整版电视剧| 欧美叔叔别撩我免费观看电视剧| 免费的行情网站WWW下载大全| 六间房| 诡秘之主 小说| 桃色| 免费网站在线观看大全电视剧 | 两对夫妻同房不交换会影响感情吗| 7777777亚洲和欧洲尺码表| 续父开续女包小芳有没有出版?