从上往下打印二叉树

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

 

这道题是非常基础的一道题,没有特殊的要求,用队列就可以解决。将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 };

 

posted @ 2019-12-22 12:12  wtzhang  阅读(129)  评论(0编辑  收藏  举报