102. Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For 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]
]

问题比较明显,就是按层数从左往右输出每个TreeNode节点的值就可以了。很容易想到广度优先遍历。

 1 class Solution {
 2 public:
 3     vector<vector<int>> levelOrder(TreeNode* root) {
 4         vector<vector<int>> res;
 5         queue<TreeNode*> q;
 6         if (root) {
 7             q.push(root);
 8             while (q.size()) {
 9                 vector<int> temp;
10                 int len = q.size();
11                 for (int i=0; i<len; ++i) {
12                     temp.push_back(q.front()->val);
13                     if (q.front()->left)    q.push(q.front()->left);
14                     if (q.front()->right)   q.push(q.front()->right);
15                     q.pop();
16                 }
17                 res.push_back(temp);
18             }
19         }
20         return res;
21     }
22 };

 

posted @ 2017-11-28 17:29  Zzz...y  阅读(130)  评论(0编辑  收藏  举报