二叉树广度遍历 php,PHP实例:PHP实现二叉树的深度优先与广度优先遍历方法

《PHP实例:PHP实现二叉树的深度优先与广度优先遍历方法》要点:

本文介绍了PHP实例:PHP实现二叉树的深度优先与广度优先遍历方法,希望对您有用。如果有疑问,可以联系我们。

本文实例讲述了PHP实现二叉树的深度优先与广度优先遍历办法.分享给大家供大家参考.具体如下: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 != null) array_unshift($queue, $cnode->left);

if ($cnode->right != null) array_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 != null) array_push($stack, $cnode->right);

if ($cnode->left != null) array_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程序设计有所赞助.PHP学习

维易PHP培训学院每天发布《PHP实例:PHP实现二叉树的深度优先与广度优先遍历方法》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值