剑指offer | 32 - I. 从上到下打印二叉树
题目:
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
提示:
节点总数 <= 1000
思路: 借助queue进行层次遍历。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */
class Solution {
public:
vector<int> levelOrder(TreeNode* root) {
if(!root) return { };
vector<int> res;
queue<TreeNode *> bfs; // 广度优先搜索(层次遍历)
bfs.push(root);
while(!bfs.empty())
{
TreeNode *temp = bfs.front();
res.push_back(bfs.front() -> val);
bfs.pop();
if(temp -> left) bfs.push(temp -> left);
if(temp -> right) bfs.push(temp -> right);
}
return res;
}
};
还没有评论,来说两句吧...