//从上往下打印二叉树(层序遍历,广度优先遍历)
#include<stdio.h>
#include<queue>
using namespace std;
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_pLef;
BinaryTreeNode* m_pRight;
};
BinaryTreeNode* createBinaryTreeNode(int value)
{
BinaryTreeNode* pNode = new BinaryTreeNode();
pNode->m_nValue = value;
pNode->m_pLef = NULL;
pNode->m_pRight = NULL;
return pNode;
}
void connectBinaryTreeNode(BinaryTreeNode* pParent, BinaryTreeNode* pLeftChild,
BinaryTreeNode* pRightChild)
{
if(!pParent || !pLeftChild || !pRightChild)
return;
pParent->m_pLef = pLeftChild;
pParent->m_pRight = pRightChild;
}
void printTreeFromTopToBottom(BinaryTreeNode* pRoot)
{
if(pRoot == NULL)
return;
queue<BinaryTreeNode*> btnQueue;
btnQueue.push(pRoot);
while(!btnQueue.empty())
{
BinaryTreeNode* pTemp = btnQueue.front();
btnQueue.pop();
printf("%d\t",pTemp->m_nValue);
if(pTemp->m_pLef)
btnQueue.push(pTemp->m_pLef);
if(pTemp->m_pRight)
btnQueue.push(pTemp->m_pRight);
}
}
void test()
{
BinaryTreeNode* pNode1 = createBinaryTreeNode(8);
BinaryTreeNode* pNode2 = createBinaryTreeNode(6);
BinaryTreeNode* pNode3 = createBinaryTreeNode(10);
BinaryTreeNode* pNode4 = createBinaryTreeNode(5);
BinaryTreeNode* pNode5 = createBinaryTreeNode(7);
BinaryTreeNode* pNode6 = createBinaryTreeNode(9);
BinaryTreeNode* pNode7 = createBinaryTreeNode(11);
connectBinaryTreeNode(pNode1,pNode2,pNode3);
connectBinaryTreeNode(pNode2,pNode4,pNode5);
connectBinaryTreeNode(pNode3,pNode6,pNode7);
printTreeFromTopToBottom(pNode1);
}
int main()
{
test();
return 0;
}
注意图的广度优先遍历
分享到:
相关推荐
二叉树遍历广度优先
实现二叉树的深度遍历广度遍历等关于二叉树的基本操作
二叉树广度和深度优先遍历,通过递归算法实现二叉树的建立,利用递归算法实现深度优先遍历,使用队列实现广度优先遍历
二叉树的深度优先搜索与广度优先搜索的非递归方法实现
js代码-二叉树广度优先遍历
二叉树的先序,中序,后序递归,非递归遍历和广度优先遍历。此程序是用C语言写的。
此代码为原创代码 主要描述排序二叉树即BST的创建,以及二叉树的中序遍历,BST的广度遍历下的层序遍历。
C++版的二叉树遍历源码,包括:广度优先、深度优先、先序遍历(递归/非递归)、中序遍历(递归/非递归)、后序遍历(递归/非递归)。
NULL 博文链接:https://redhacker.iteye.com/blog/413606
public void helper(TreeNode root, int level){// 当前层没有 list,新建// 取得当前层的 list迭代pub
前序遍历 中序遍历 后序遍历 深度遍历 广度遍历 插入排序 选择排序 冒泡排序 快速排序 堆排序 希尔排序 合并排序 快速3排序
二叉树的遍历:二叉树的各种遍历 图的遍历:图的深度遍历,广度遍历 一元多项式的相关设计: 停车场的课程设计(堆栈和队列的使用,停车出车) 迷宫的递归算法(需要修改)
//广度优先遍历 void BFSPrint(Node *p); //深度优先遍历 void DFSPrint(Node *p); //插入操作 void Insert(Info key); //插入节点 void InsertNode(Node *&root;,Info key); //删除操作 void Remove(Info...
主要介绍了Java实现二叉树的深度优先遍历和广度优先遍历算法,结合实例形式详细分析了二叉树的定义、深度优先遍历与广度优先遍历算法原理与相关操作实现技巧,需要的朋友可以参考下
二叉树的遍历 PHP遍历二叉树的实现,深度优先,广度优先,非递归实现;
二叉树的遍历方式主要有四种:前序遍历、中序遍历、后序遍历和层次遍历。...层次遍历,又称为广度优先搜索,其顺序是按照从上到下、从左向右逐层访问二叉树的每个节点。 JAVA实现二叉树遍历 Python实现二叉树遍历
二叉树深度优先遍历、广度优先遍历{非递归}
二叉树前序,中序,后序的递归与非递归算法。
#二叉树的广度优先遍历 #使用一个队列实现 class Node { public $data = null; public $left = null; public $right = null; } #@param $btree 二叉树根节点 function breadth_first_traverse($btree) { $...
例如: 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7] ]解法一:BFS层序遍历二叉树是典型的广度优先搜