二叉树的层次遍历
2017-04-18 22:39
281 查看
问题描述:
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)
样例
给一棵二叉树
返回他的分层遍历结果:
解题思路:
用队列先进先出的特点,将每层的节点入对,后依次出队,然后将出队节点的下一层保存,并将出队节点存入向量中,层层进行,直到最后一层。
代码:
/**
* 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) {
vector<vector<int>> result;
queue<TreeNode*>q; //
vector<int> level; //每层结果
int size,i;
TreeNode* p;
if(root==NULL) return result;
q.push(root); //入队
while(!q.empty()) { //队列中有几个元素就依次遍历每个元素的左右结点
level.clear();
size=q.size();
for(i=0; i<size; i++) {
p=q.front(); //队首元素值赋给p
q.pop(); //出队
level.push_back(p->val);
if(p->left) { //依次压入左右结点元素
q.push(p->left);
}
if(p->right) {
q.push(p->right);
}
}
result.push_back(level); //添加每层数据
}
return result;
// write your code here
}
};
感想:
注意运用队列特性的方法
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)
样例
给一棵二叉树
{3,9,20,#,#,15,7}:
3 / \ 9 20 / \ 15 7
返回他的分层遍历结果:
[ [3], [9,20], [15,7] ]
解题思路:
用队列先进先出的特点,将每层的节点入对,后依次出队,然后将出队节点的下一层保存,并将出队节点存入向量中,层层进行,直到最后一层。
代码:
/**
* 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) {
vector<vector<int>> result;
queue<TreeNode*>q; //
vector<int> level; //每层结果
int size,i;
TreeNode* p;
if(root==NULL) return result;
q.push(root); //入队
while(!q.empty()) { //队列中有几个元素就依次遍历每个元素的左右结点
level.clear();
size=q.size();
for(i=0; i<size; i++) {
p=q.front(); //队首元素值赋给p
q.pop(); //出队
level.push_back(p->val);
if(p->left) { //依次压入左右结点元素
q.push(p->left);
}
if(p->right) {
q.push(p->right);
}
}
result.push_back(level); //添加每层数据
}
return result;
// write your code here
}
};
感想:
注意运用队列特性的方法
相关文章推荐
- 二叉树的遍历:先序,中序,后序,递归,非递归,层次遍历
- [LintCode 69] 二叉树的层次遍历 (Python)
- lintcode: 二叉树的锯齿形层次遍历
- PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
- 数据结构36:二叉树层次遍历
- LintCode-69.二叉树的层次遍历
- 二叉树(一) 先序遍历、中序遍历、后续遍历、层次遍历的递归与非递归实现
- 层次遍历二叉树
- LintCode:二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历及之形打印算法 Java实现
- 求二叉树的层次遍历
- 70 - 二叉树的层次遍历 II
- 算法题/层次遍历二叉树
- 数据结构-层次遍历二叉树
- uva122--二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树非递归遍历、层次遍历、高度、节点数
- 6-3-2 二叉树层次遍历(BFS)
- 二叉树的先序,中序,层次遍历,递归与非递归实现