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]
]
问题描述:给定一个二叉树,层次遍历它的所有节点。
class Solution {
public:
vector > levelOrder(TreeNode *root) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(root == NULL)
return vector >(0);
queue
> que;
vector > vec;
vector ivec;
TreeNode *pnode = root;
int level = 0;
pair pair_data;
que.push(make_pair(pnode, 1));
while(!que.empty()) {
pair_data = que.front();
que.pop();
pnode = pair_data.first;
level = pair_data.second;
ivec.push_back(pnode->val);
if(que.empty() || level != que.front().second) {
vec.push_back(ivec);
ivec.clear();
}
if(pnode->left) {
que.push(make_pair(pnode->left, level+1));
}
if(pnode->right) {
que.push(make_pair(pnode->right, level+1));
}
}
return vec;
}
};