广度优先遍历二叉树实现

/*广度优先遍历二叉树实现*/
#include <iostream>
#include <deque>
using namespace std;

typedef struct BTN
{
	int data;
	BTN *pL;
	BTN *pR;
}BinaryTreeNode;


deque<BinaryTreeNode> NodeDeque;

//广度优先遍历二叉树.
void GDBL(BinaryTreeNode *root)
{
	if(root == NULL)
		return;
	NodeDeque.push_back(*root);

	BinaryTreeNode *p = root;
	while(NodeDeque.size() > 0)
	{
		cout << NodeDeque.front().data;
		if(NodeDeque.front().pL != NULL)
			NodeDeque.push_back(*NodeDeque.front().pL);
		if(NodeDeque.front().pR != NULL)
			NodeDeque.push_back(*NodeDeque.front().pR);
		NodeDeque.pop_front();
	}
}

int main()
{
	BinaryTreeNode *pRoot = new(BinaryTreeNode);
	pRoot->data = 8;
	pTemp->pL = NULL;
	pTemp->pR = NULL;

	BinaryTreeNode *pTemp = new(BinaryTreeNode);
	pTemp->data = 6;
	pTemp->pL = NULL;
	pTemp->pR = NULL;
	pRoot->pL = pTemp;

	pTemp = new(BinaryTreeNode);
	pTemp->data = 10;
	pTemp->pL = NULL;
	pTemp->pR = NULL;
	pRoot->pR = pTemp;

	pTemp = new(BinaryTreeNode);
	pTemp->data = 5;
	pTemp->pL = NULL;
	pTemp->pR = NULL;
	pRoot->pL->pL = pTemp;

	pTemp = new(BinaryTreeNode);
	pTemp->data = 7;
	pTemp->pL = NULL;
	pTemp->pR = NULL;
	pRoot->pL->pR = pTemp;

	pTemp = new(BinaryTreeNode);
	pTemp->data = 9;
	pTemp->pL = NULL;
	pTemp->pR = NULL;
	pRoot->pR->pL = pTemp;

	pTemp = new(BinaryTreeNode);
	pTemp->data = 11;
	pTemp->pL = NULL;
	pTemp->pR = NULL;
	pRoot->pR->pR = pTemp;

	GDBL(pRoot);

	return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值