按层次方式打印二叉树
来源:互联网 发布:购买域名和空间 编辑:程序博客网 时间:2024/05/19 08:06
给定一个二叉树,以层次方式打印各层元素,如下。用到广度优先遍历。以广度优先,就是说一层层地打印,这样,先入的就先打印,所以用到的数据据结构是队列。而深度优先,则是先遍历完一个分支才进行第二个分支,用的是栈结构。
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7]]
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> ret; vector<int> v; if (!root) return ret; int cur_level = 1;//当前所在层次 int cur_level_num = 1;//当前层次还有多少个元素要打印 int next_level_num = 0;//下一个层次有多少个元素要打印 queue<TreeNode*> q;//广度优先必用数据结构 q.push(root); while (!(q.empty())) { root = q.front(); q.pop(); v.push_back(root->val);//要打印的元素保存 --cur_level_num;//要打印的元素减一 if (root->left)//这说明是下一层的元素 { q.push(root->left); ++next_level_num; } if (root->right) { q.push(root->right); ++next_level_num; } if (0 == cur_level_num)//换层标志,各种初始化 { cur_level_num = next_level_num; next_level_num = 0; ++cur_level; ret.push_back(v); v.clear(); } } return ret; }};
0 0
- 按层次方式打印二叉树
- 按层次打印二叉树
- 层次打印二叉树
- 层次打印二叉树
- 层次打印二叉树
- 按层次打印二叉树元素
- 怎样按层次打印二叉树
- 层次结构打印二叉树
- 二叉树层次遍历打印
- Python二叉树层次打印
- 按照层次打印二叉树
- 牛客网 算法第一题 二叉树按层次打印问题
- 根据后序中序序列构建二叉树,按层次打印
- 按层打印二叉树的节点【层次遍历变形】
- 二叉树层次遍历的螺旋打印
- 在线编程--层次打印二叉树
- 二叉树的层次遍历(打印)
- 按照层次遍历并打印二叉树
- Cordys HTML5 SDK BootStrap
- HTTP请求报文和HTTP响应报文 http://blog.csdn.net/zhangliang_571/article/details/23508953
- Nmap新增脚本http-svn-enum和http-svn-info
- SSH中各种形式的取值方式
- Mtalab--数据拟合
- 按层次方式打印二叉树
- HDU 2583 permutation
- 使用X-UA-Compatible来设置IE浏览器兼容模式
- 装饰者设计模式
- 关于std::function和std::bind绑定成员函数
- Android开发设计模式
- POJ 1654 Area(计算几何)
- 网络爬虫基本原理二
- 关于Vuforia 4.2.3水印出现问题以及怎么消除?