LeetCode 102. Binary Tree Level Order Traversal 树的广度优先遍历 辅助数据结构队列
2017-05-25 22:15
381 查看
Binary Tree Level Order Traversal
题意
思路
代码
结果
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
2.借助辅助数据结构队列来实现。先将根节点入队,保存结点的值和结点的所属的层数。
3.若结点的左结点存在入队,若右结点存在入队,然后不断的出队入队,挨个层次访问所有的点。在此过程中不断维护结点所属的层数。
4.当遍历到新的层,需要动态开辟一块存储空间的条件巧妙设定。
题意
思路
代码
结果
102. Binary Tree Level Order Traversal
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,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
题意
给定一个二叉树,返回树的广度优先遍历结点中的值。思路
1.按照树的广度优先遍历,一层一层的遍历2.借助辅助数据结构队列来实现。先将根节点入队,保存结点的值和结点的所属的层数。
3.若结点的左结点存在入队,若右结点存在入队,然后不断的出队入队,挨个层次访问所有的点。在此过程中不断维护结点所属的层数。
4.当遍历到新的层,需要动态开辟一块存储空间的条件巧妙设定。
代码
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; if(root == NULL) { return res; } //queue<int> que; //想清楚队列存储的数据,是树的结点入队 //观察返回信息,还需包含层级信息,所以结点入队还需维护其层级的信息 queue<pair<TreeNode*,int>> que; que.push(make_pair(root,0)); while(!que.empty()) { //取队头元素 TreeNode *node = que.front().first; int level = que.front().second; que.pop(); //需要注意当前节点所在的层,是否在res中已经存在 if(level == res.size()) //若相等就说明res还不包含level层,这个结点肯定在新的层中 res.push_back(vector<int>()); //创建一个新的层,来加载该层的结点数 res[level].push_back(node->val); if(node->left) { que.push(make_pair(node->left,level+1)); //当左结点存在,那么左结点的层数是当前结点层数+1 } if(node->right) { que.push(make_pair(node->right,level+1)); } } return res; } };
结果
相关文章推荐
- 对树形结构数据进行广度优先/深度优先遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构之深度优先,广度优先遍历
- 【数据结构】图的遍历方法 深度优先遍历和广度优先遍历
- 数据结构中的赫夫曼树编码,KMP算法,图的深度优先遍历和广度优先遍历
- SDUT OJ数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- LeetCode Binary Tree Right Side View : 思想上的基于队列的广度优先遍历,形式上的一个简单变种
- 数据结构之图(深度优先搜索和广度优先搜索使用的队列和栈)
- 数据结构实验图论:基于邻接矩阵/邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 第十二周--数据结构-图的遍历之广度优先遍历求解问题
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- SDUT 2141 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构之图---广度优先遍历---C++实现