基于visual Studio2013解决面试题之0305广度优先搜索二叉树




题目



解决代码及点评

/*
	输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序
	打印

	层次遍历二叉树
	解决方法,使用广度优先搜索
*/



#include <iostream>
#include <list>
using namespace std;

// 树节点,包括左二子、右儿子指针和保存的值
class TreeNode
{
public:
	TreeNode* _left;
	TreeNode* _right;
	int _val;

	TreeNode(int val, TreeNode* left = NULL, TreeNode* right = NULL) :
		_val(val), _left(left), _right(right){}
};

// 二叉树类
class BSTree
{
public:
	TreeNode* _root;

	BSTree(TreeNode* root = NULL) : _root(root) {}

	// 往树里增加元素
	void add(int val)
	{
		add(_root, val);
	}

	// 广度优先搜索
	void BFS()
	{
		list<TreeNode*> s;
		if (_root == NULL) return;
		cout << "BFS squence:";

		// 将根节点放入链表,开始遍历
		s.push_back(_root);
		
		while (s.size())
		{
			// 访问链表中的头节点
			TreeNode* node = *s.begin();
			cout << node->_val << " ";
			s.pop_front();

			// 再将它的非空的左右儿子放入链表尾部
			if (node->_left) s.push_back(node->_left);
			if (node->_right) s.push_back(node->_right);
		}
		cout << endl;
	}

private:
	

	// 使用递归比较简单
	void add(TreeNode*& root, int val)
	{
		// 如果比根节点大,则添加到右子树,否则添加到左子树
		if (root == NULL) root = new TreeNode(val);
		else
		{
			if (root->_val > val) add(root->_left, val);
			else add(root->_right, val);
		}
	}
};

// 测试主函数
int main()
{
	// 建立搜索树
	BSTree tree;
	tree.add(10);
	tree.add(8);
	tree.add(123);
	tree.add(11);
	tree.add(900);

	
	tree.BFS();
	system("pause");
}


代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6704519

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值