题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
这道题是非常基础的一道题,没有特殊的要求,用队列就可以解决。将root节点放到队列里,如果队列不为空,每次弹出队首元素,并将队首元素的值放到数组里。如果这个队首元素有左儿子,则把左儿子压入队列,如果有右儿子,把右儿子也压入队列。因为队列是先进先出的,所以可以实现层级遍历。
如果root为空,可以直接用 vector<int>({}) 来返回。
c++代码如下:
1 class Solution { 2 public: 3 vector<int> PrintFromTopToBottom(TreeNode* root) { 4 if(!root) return vector<int>({}); 5 queue<TreeNode*> q; 6 vector<int> res; 7 q.push(root); 8 while(q.size()){ 9 auto t = q.front(); 10 q.pop(); 11 res.push_back(t->val); 12 if(t->left) q.push(t->left); 13 if(t->right) q.push(t->right); 14 } 15 return res; 16 } 17 };