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] ]
1:使用队列;2:当是一层的时候在队列的最后添加空指针,并将当前访问的指针出队列
vector<vector<int> > levelOrder(TreeNode *root)
{
vector<vector<int> > result;
vector<int> temp;
if(root == NULL)
{
return result;
}
deque<TreeNode* >myDeque;
myDeque.push_back(root);
myDeque.push_back(NULL);
while(!myDeque.empty())
{
TreeNode* tempNode = myDeque.front();
myDeque.pop_front();
if(tempNode)
{
temp.push_back(tempNode->val);
if(tempNode->left)
{
myDeque.push_back(tempNode->left);
}
if(tempNode->right)
{
myDeque.push_back(tempNode->right);
}
}
else
{
result.push_back(temp);
temp.clear();
if(!myDeque.empty())
{
myDeque.push_back(NULL);
}
}
}
return result;
}