基于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
- 基于visual Studio2013解决面试题之0305广度优先搜索二叉树
- 基于visual Studio2013解决面试题之0208二叉搜索树后序遍历序列
- 基于visual Studio2013解决面试题之0201二叉树转链表
- 基于visual Studio2013解决算法导论之046广度优先搜索
- 基于visual Studio2013解决面试题之0304镜像二叉树
- 基于visual Studio2013解决面试题之0401非递归遍历二叉树
- 基于visual Studio2013解决面试题之0601二叉树深度
- 基于visual Studio2013解决面试题之0309左移递减序列搜索
- 基于visual Studio2013解决面试题之0203栈实现
- 基于visual Studio2013解决面试题之0205查找路径
- 基于visual Studio2013解决面试题之0207单词翻转
- 基于visual Studio2013解决面试题之0202上下排
- 基于visual Studio2013解决面试题之0301累加
- 基于visual Studio2013解决面试题之0303数组求和
- 基于visual Studio2013解决面试题之0308Fibonacci数列
- 基于visual Studio2013解决面试题之0403串联字符串
- 基于visual Studio2013解决面试题之0407数组差
- 基于visual Studio2013解决面试题之0501上台阶
- 在此上下文中不允许使用子查询。只允许使用标量表达式。
- 黑马程序员 IO流(二)
- [摘]Android初始化语言init.rc语法分析
- 我开博啦 ^0^
- IDEA 下启动tomcat报错
- 基于visual Studio2013解决面试题之0305广度优先搜索二叉树
- java写自动抢小米手机程序
- FAFU-1410 九数矩阵 康拓展开
- quick-cocos2dx 组件管理器
- 系统测试用例设计之判定表法
- 庞果英雄会——数组排序
- ArcGIS License Manager 静默授权命令摘录
- c# 导入导出excel
- mvc Pager 分页控件的使用