二叉树的层次遍历
2017-04-19 21:17
190 查看
问题描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)
样例:给一棵二叉树
返回他的分层遍历结果:
实现思路:创建一个队列,首先将根节点入队,当队列不空时,执行以下操作:定义一个向量level来存放每一层节点的数值,同时定义size表示队列的长度,为了后面判断当前层是否已经操作完毕。队头元素的值存入向量level中,然后队头元素出队,同时它的左右孩子入队。当当前层操作完毕后,将向量level存放到向量v中。若队列不空,继续进行下一层的操作。
实现代码:
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
/**
* @param root: The root of binary tree.
* @return: Level order a list of lists of integer
*/
public:
vector<vector<int>> levelOrder(TreeNode *root) {
// write your code here
vector<vector<int>> v;
if(root==NULL) return v;
queue<TreeNode*> q;
q.push(root);
while(!q.empty())
{
vector<int> level;
int size=q.size();
for(int i=0;i<size;++i)
{
TreeNode* node=q.front();
q.pop();
level.push_back(node->val);
if(node->left)
q.push(node->left);
if(node->right)
q.push(node->right);
}
v.push_back(level);
}
return v;
}
};
做题感想:开始时不明白vector<vector<int>>是什么意思,经同学指点知道是返回一个以向量为元素的向量。
样例:给一棵二叉树
{3,9,20,#,#,15,7}:
3 / \ 9 20 / \ 15 7
返回他的分层遍历结果:
[ [3], [9,20], [15,7] ]
实现思路:创建一个队列,首先将根节点入队,当队列不空时,执行以下操作:定义一个向量level来存放每一层节点的数值,同时定义size表示队列的长度,为了后面判断当前层是否已经操作完毕。队头元素的值存入向量level中,然后队头元素出队,同时它的左右孩子入队。当当前层操作完毕后,将向量level存放到向量v中。若队列不空,继续进行下一层的操作。
实现代码:
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
/**
* @param root: The root of binary tree.
* @return: Level order a list of lists of integer
*/
public:
vector<vector<int>> levelOrder(TreeNode *root) {
// write your code here
vector<vector<int>> v;
if(root==NULL) return v;
queue<TreeNode*> q;
q.push(root);
while(!q.empty())
{
vector<int> level;
int size=q.size();
for(int i=0;i<size;++i)
{
TreeNode* node=q.front();
q.pop();
level.push_back(node->val);
if(node->left)
q.push(node->left);
if(node->right)
q.push(node->right);
}
v.push_back(level);
}
return v;
}
};
做题感想:开始时不明白vector<vector<int>>是什么意思,经同学指点知道是返回一个以向量为元素的向量。
相关文章推荐
- 数据结构--二叉树--层次遍历二叉树(链式遍历--队列)
- 层次遍历 二叉树
- 二叉树的层次遍历
- LintCode 二叉树的层次遍历
- 非递归层次遍历方法实现二叉树中指定节点的层次数查找
- 二叉树的锯齿形层次遍历
- uva 11234 Expressions(建立二叉树+层次遍历)
- 二叉树的建树、遍历(先序、中序、后序、层次)(递归和非递归)--Java实现
- 求二叉树的层次遍历oj
- 普通二叉树的构建与层次遍历
- July 微软面试100题 第16题 二叉树的层次遍历
- 二叉树的先序、中序、后序以及层次遍历
- 二叉树的4种遍历:前序,中序,后序,层次遍历
- 二叉树的前序、中序、后序、层次遍历的递归与非递归实现
- 二叉树:创建,遍历(递归、非递归、层次)
- LeetCode OJ 之 Binary Tree Zigzag Level Order Traversal (二叉树的曲线层次遍历)
- 二叉树非递归层次遍历
- 二叉树的层次遍历 UVa122
- 69 - 二叉树的层次遍历
- 【二叉树】层次遍历