广度优先遍历的实现

利用循环操作,将树的当前层的每个节点放在队列中,然后再将当前层的每个节点的孩子节点放在队列中,然后取出位于队列前面的当前层的所有节点,只留下这些节点的孩子节点,然后进行下一次循环

具体如下:

void BFT() {		//该函数的作用是使用广度优先遍历二叉树
		cout << endl << "开始遍历" << endl;
		queue<node*>Q;
		Q.push(root);
		datatype a;
		a = Q.front()->data;
		cout << a;
		Q.push(Q.front()->Lchild);
		Q.push(Q.front()->Rchild);
		Q.pop();
		while (1) {
			//system("PAUSE");
			int num;		//用来记录队列里元素的数量
			num = Q.size();
			if (num == 0) {
				break;
			}
			else {
				cout << endl;
				int b = 0;
				while (b < num) {
					//system("PAUSE");
					node* c;
					c = Q.front();
					cout << c->data <<" ";
					if (c->Lchild != NULL)Q.push(c->Lchild);
					if (c->Rchild != NULL)Q.push(c->Rchild);
					Q.pop();
					b++;
				}
			}
		}
		cout << endl << "遍历结束" << endl;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值