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

来源:互联网 发布:领航员监控软件 编辑:程序博客网 时间:2024/06/04 18:42



题目



解决代码及点评

/*输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印层次遍历二叉树解决方法,使用广度优先搜索*/#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
原创粉丝点击