您的位置:首页 > 其它

leetcode: Binary Tree Level Order Traversal

2015-05-15 11:13 232 查看
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]

]

confused what “{1,#,2,3}” means? > read more on how binary tree is serialized on OJ.

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> vec;
queue<TreeNode*>que;
if(root == NULL)
return vector<vector<int>>(0);
TreeNode* p = root;
que.push(p);
vector<int>v;
int curCount = 1;
int nextCount = 0;

while(!que.empty()){
int i = 0;
while(i < curCount){
p = que.front();
if(p->left != NULL){
que.push(p->left);
nextCount++;
}
if(p->right != NULL){
que.push(p->right);
nextCount++;
}
que.pop();
i++;
v.push_back(p->val);
}
vec.push_back(v);
v.clear();
curCount = nextCount;
nextCount = 0;
}
return vec;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  binary tree level order