题目:
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] ]很经典的二叉树按层遍历,因为是从上往下顺序输出,先进先出,所以借用的不是堆栈而是队列!
vector<vector<int> > levelOrder(TreeNode *root)
{
vector<vector<int> > res;
vector<int> vec;
if(root ==NULL) return res;
deque<TreeNode *> que1;
deque<TreeNode *> que2;
que1.push_back(root);
TreeNode *x;
while(!que1.empty())
{
while(!que1.empty()) //要能分层就只能用两个队列
{
x=que1.front();
vec.push_back(x->val);
if(x->left !=NULL)
que2.push_back(x->left);
if(x->right !=NULL)
que2.push_back(x->right);
que1.pop_front();
}
res.push_back(vec);
vec.clear();
que2.swap(que1);
}
return res;
}