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,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
思路:这道题同样可以用层序遍历的思想,定义一个队列Q,指针front,rear分别记录每一层节点在Q中的起始坐标和终点坐标,然后遍历取得节点的值即可。
class Solution {
public:
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int> > aa;
vector<int> line;
int front = 0, rear = -1;
int index,i;
if(root == NULL)
{
return aa;
}
vector<TreeNode*> Q;
Q.push_back(root);
rear = Q.size();
line.push_back(root->val);
aa.push_back(line);
while(front < rear)
{
index = rear;
line.clear();
for(i=front; i<index; i++)
{
if (Q[i]->left != NULL)
{
Q.push_back(Q[i]->left);
line.push_back(Q[i]->left->val);
}
if (Q[i]->right != NULL)
{
Q.push_back(Q[i]->right);
line.push_back(Q[i]->right->val);
}
}
rear = Q.size();
if (rear != index)
{
aa.push_back(line);
}
front = index;
}
return aa;
}
};