题目描述:
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
提示:
节点总数 <= 1000
作者:Krahets
链接:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/9ackoe/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解答:
class Solution {
public:
vector<int> levelOrder(TreeNode* root) {
vector<int> res;
if(nullptr == root)
return res;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()){
TreeNode* node = que.front();
res.push_back(node->val);
que.pop();
if(node->left)
que.push(node->left);
if(node->right)
que.push(node->right);
}
return res;
}
};
运行结果:
Notes:
利用队列queue进行广度优先搜索(BFS),注意每次queue的长度为树每层的长度:根判空返回,队列先进根,循环取队头,看值进左右