描述
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
提示:
0 <= 二叉树的结点数 <= 1500
示例1
输入:
{1,2}
复制返回值:
[[1],[2]]
复制
示例2
输入:
{1,2,3,4,#,#,5}
复制返回值:
[[1],[2,3],[4,5]]
代码:
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
//int 类型的容器的容器
vector<vector<int> > tree;
//root 为空则直接返回空的容器
if(root==NULL) return tree;
//将root装入队列tree_queue
queue<TreeNode *> tree_queue;
tree_queue.push(root);
//当队列不为空时,将队列内的元素装入tree中
while(!tree_queue.empty())
{
int size=tree_queue.size();
vector<int> vec;
//将队列中的元素装入容器vec中
while(size--)
{
TreeNode* node=tree_queue.front();
tree_queue.pop();
vec.push_back(node->val);
//把每个元素的左右节点依次装入队列中
if(node->left)
{
tree_queue.push(node->left);
}
if(node->right)
{
tree_queue.push(node->right);
}
}
if(vec.size()>0)
{
tree.push_back(vec);
}
}
return tree;
}
};
方法与总结:将二叉树从根节点按层依次放入队列中,利用队列先进先出的特点,可以较为简单的完成层序遍历