时间:2021-05-26
本文实例讲述了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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了java实现二叉树的深度优先遍历和广度优先遍历算法。分享给大家供大家参考,具体如下:1.分析二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优
本文实例讲述了C++非递归队列实现二叉树的广度优先遍历。分享给大家供大家参考。具体如下:广度优先非递归二叉树遍历(或者说层次遍历):voidwidthFirst
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下:前言:深度优先遍历:对每一个可能的分支路径
用java实现的数组创建二叉树以及递归先序遍历,递归中序遍历,递归后序遍历,非递归前序遍历,非递归中序遍历,非递归后序遍历,深度优先遍历,广度优先遍历8种遍历方
本文实例讲述了php实现的二叉树遍历算法。分享给大家供大家参考,具体如下:今天使用php来实现二叉树的遍历创建的二叉树如下图所示php代码如下所示:value.