版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zy2317878/article/details/81629601
Description
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
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]
]
Solution 1(C++)
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
if(root == nullptr) return res;
queue<TreeNode*> layer;
layer.push(root);
while(!layer.empty()){
int layernum = layer.size();
vector<int> cur;
while(layernum > 0){
TreeNode* temp = layer.front();
cur.push_back(temp->val);
if(temp->left != nullptr) layer.push(temp->left);
if(temp->right != nullptr) layer.push(temp->right);
layer.pop();
--layernum;
}
res.push_back(cur);
}
return res;
}
};
算法分析
这道题考察的是二叉树的层次遍历,之前也有做过树的Easy难度的题目,关键就是层次遍历要利用队列这种数据结构。先进先出。同一层的节点,进入队列,并将当前节点的左右子节点推入队列。即可。
程序分析
注意队列在树的层次遍历中的作用。