#C++版本的简单实现
- 算法思路
- 建立两个队列Q1,Q2;Q2初始化为root,即根节点。
- Q1存储当前层序的数据;Q2存储下一层的数据。
- 遍历Q1,遍历后每次都取出头尾数据;当Q1为空时,Q1与Q2交换队列。
- 终止条件,Q2为空队列。
- 第一次自己搞定,虽然思路写法都不高级,但还是分享了出来
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
vector<vector<int> > v;
if(root==NULL) //判空
return v;
queue<TreeNode*> Q1;
queue<TreeNode*> Q2;
TreeNode *p;
Q2.push(root);
while(!Q2.empty())
{
vector<int> v1;
if(Q1.empty())
Q1.swap(Q2);
while(!Q1.empty())
{
p=Q1.front();
v1.push_back(p->val);
Q1.pop();
if(p->left)
Q2.push(p->left);
if(p->right)
Q2.push(p->right);
}
v.push_back(v1);
}
return v;
}
};