这次介绍使用PHP对二叉树进行排序的方法。 使用PHP对二叉树进行排序时的注意事项是什么? 以下是实战案例。 一起看看吧。
这里展示了对二叉树节点的插入、中序扫描、极值搜索、特定值搜索进行排序的功能。
基本上没有提供任何概念和定义。 首先,我建议你简要理解本文提供的一些概念来看本文。
其实,我只是简单地提供了代码,评论也很少。 辛苦了。
在二叉树:计算机科学中,二叉树是一种每个节点最多有两个子树的树结构。
二叉树:左边的子节点的值比父节点的值小,右边的子节点的值比父节点的值大.
几个概念:根节点
叶节点
左边的树
右边的孩子树
中序扫描
超前遍历
最后的遍历
二叉树搜索
中序遍历:首先遍历左子树,遍历自节点,遍历右节点。 遍历的结果是排序的结果//created by曲朋维
//对二叉树进行排序
//完成以下任务。
//1 .在相应的位置插入节点
//2 .按中序遍历该二叉树
//3 .找到这个二叉树的极值
//4 .查找特定值
类节点{
公共$ key、$left、$right;
publicfunctionconstruct($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;
}
//中序遍历
//$树- mid sort (;
//print_r($tree-sortarr;
//查找极值
//$tree-findMin (;
//$tree-findMax (;
//查找特定值
$树查找(7;
echo '
';
$三叉查找(11;
执行结果:找到7
没有这个!
看了这篇报道的事例,我相信你掌握了方法。 更棒。 请关注php中文网的其他相关文章。
请阅读: