题目:
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;
}
二叉树按层遍历算法详解
本文详细解释了如何使用队列实现二叉树的层序遍历,包括算法实现过程及示例。
310

被折叠的 条评论
为什么被折叠?



