本文举例阐述了PHP排序二叉树基本功能的实现方法。 分享仅供参考。 具体来说,请关注cs的代笔。 有用!
在此,展示了对二叉树节点的插入、中顺扫描、极值的搜索、特定值的搜索进行排序的功能
基本上没有提供任何概念或定义建议。 首先,让我们简要了解一下本文提供的一些概念,看看本文
其实,我只是简单地提供了代码,评论也很少。 辛苦了
在二叉树的计算机科学中,二叉树是每个节点最多有两个子树的树结构。
二叉树左侧子节点的值小于父节点的值,右侧子节点的值大于父节点的值
一些概念
根节点
叶节点
左边的树
右边的孩子树
中序扫描
超前遍历
最后的遍历
二叉树搜索
中序扫描
首先遍历左子树,遍历自节点,遍历右节点的结果是排序的结果
created by曲朋维
对二叉树进行排序
完成以下任务
1在相应位置插入节点
2按中序遍历这二叉树
3找出这个二叉树的极值
4查找特定值
类节点{
公共$ key、$left、$right;
公共功能_ _ construct ($ key ) )。
{
$this-key=$key;
}
}
类二进制树{
公共$根;
公共$ sortarr=[ ];
插入节点
publicfunctioninsertnode($node,$newNode ) {
if($node-key$newnode-key ) {
如果父节点小于子节点,请将其插入右侧
if(empty ) $node-right ) }
$node-right=$newNode;
}else{
$this-insertnode($node-right,$newNode );
}
}elseif($node-key$newnode-key ) {
如果父节点大于子节点,请将其插入到左侧
if(empty ) $node-left ) }
$node-left=$newNode;
}else{
$this-insertnode($node-left,$newNode );
}
}
}
publicfunctioninsert($key ) {
$newnode=newnode($key;
if(empty($this-root ) ) ) )。
$this-root=$newNode;
}else{
$this-insertnode($this-root,$newNode );
}
}
中序扫描
公共函数mid sort
$this-midsortnode($this-root );
}
publicfunctionmidsortnode ($ node )。
if (! empty($node ) ) }
$this-midsortnode($node-left;
array_push($this-sortarr,$node-key );
$this-midsortnode($node-right;
}
}
寻找极值
公共函数查找min
继续查找左边的树,直到左边的树节点成为叶子节点
if (! Empty($this-root ) ) }
$this-findminnode($this-root );
}
}
publicfunctionfindminnode (node $ node ) {
if (! empty($node-left ) ) }
$this-findminnode($node-left );
}else{
名为echo '的二叉树的最小值为' $node-key;
}
}
公共函数查找最大值
if (! Empty($this-root ) ) }
$this-findmaxnode($this-root );
}
}
publicfunctionfindmaxnode (node $ node ) {
if (! empty($node-right ) ) }
$this-findmaxnode($node-right;
}else{
名为echo '的二叉树的最大值为' $node-key;
}
}
搜索特定值
publicfunctionfind($val=' ' ) {
if (! empty($val ) ) }
$this-findnode($this-root,$val );
}
}
publicfunctionfindnode (node $ node,$val ) {
if($node-key==$val ) {
echo '找到了' $val ';
}elseif($node-key$val ) {
如果父节点的值大于要搜索的值,请搜索其左侧的子树
if (! empty($node-left ) ) }
$this-findnode($node-left,$val );
}else{
echo '没有那种东西!' ;
}
}elseif($node-key$val ) {
if (! empty($node-right ) ) }
$this-findnode($node-right,$val );
}else{
echo '没有那种东西!' ;
}
}
}
}
$tree=new BinaryTree (;
插入节点
$nodes=Array(8、3、10、1、6、14、4、7、13 );
Foreach($nodesas$value ) {
$tree-insert($value;
}
中序扫描
$tree-midSort (;
print_r($tree-sortarr;
寻找极值
$tree-findMin (;
$tree-findMax (;
搜索特定值
$树查找(7;
echo 'br ';
$三叉查找(11;
执行结果:
找到了7
没有这个!
对PHP相关内容感兴趣的读者请参考本网站的专稿“《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》、《PHP数学运算技巧总结》、0103010”
希望本文所述对大家的PHP编程有帮助。
您可能感兴趣的文章PHP ClassObject -- PHP自我排序二叉树的详细分析基于PHP的二叉树深度优先和广度优先扫描方法基于PHP的线索二叉树和二叉树扫描方法基于PHP的二叉树扫描算法详细解基于PHP的二叉树结构算法示例PHP 能的详细解【包含二叉树检索树的平衡树和红黑树】从PHP上打印二叉树的方法基于PHP非递归算法扫描二叉树的操作例获取PHP二叉树镜像的方法判断PHP二叉树是否对称的方法PHP二叉树的深度优先扫描(前