温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP如何实现二叉树的深度优先与广度优先遍历方法

发布时间:2021-06-25 14:07:10 阅读:172 作者:小新 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍PHP如何实现二叉树的深度优先与广度优先遍历方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

具体如下:

#二叉树的广度优先遍历
#使用一个队列实现
class Node {
 public $data null;
 public $left null;
 public $right null;
}
#@param $btree 二叉树根节点
function breadth_first_traverse($btree{
 $traverse_data array();
 $queue array();
 array_unshift($queue$btree); #根节点入队
 while (!empty($queue)) { #持续输出节点,直到队列为空
   $cnode array_pop($queue); #队尾元素出队
   $traverse_data[] = $cnode->data;
   #左节点先入队,然后右节点入队
   if ($cnode->left != nullarray_unshift($queue$cnode->left);
   if ($cnode->right != nullarray_unshift($queue$cnode->right);
 }
 return $traverse_data;
}
#深度优先遍历,使用一个栈实现
function depth_first_traverse($btree{
$traverse_data array();
$stack array();
array_push($stack$btree);
while (!empty($stack)) {
  $cnode array_pop($stack);
  $traverse_data[] = $cnode->data;
  if ($cnode->right != nullarray_push($stack$cnode->right);
  if ($cnode->left != nullarray_push($stack$cnode->left);
}
return $traverse_data;
}
$root new Node();
$node1 new Node();
$node2 new Node();
$node3 new Node();
$node4 new Node();
$node5 new Node();
$node6 new Node();
$root->data = 1;
$node1->data = 2;
$node2->data = 3;
$node3->data = 4;
$node4->data = 5;
$node5->data = 6;
$node6->data = 7;
$root->left = $node1;
$root->right = $node2;
$node1->left = $node3;
$node1->right = $node4;
$node2->left = $node5;
$node2->right = $node6;
$traverse breadth_first_traverse($root);
print_r($traverse);
echo "";
$traverse depth_first_traverse($root);
print_r($traverse);

以上是“PHP如何实现二叉树的深度优先与广度优先遍历方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI

开发者交流群×