题目:
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]
]
解答:
/**
* 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>> rtn;
if (!root) {
return rtn;
}
vector<TreeNode*> vecA;
vector<TreeNode*> vecB;
vector<TreeNode*> *pCurVec = &vecA;
vector<TreeNode*> *pNextVec = &vecB;
pCurVec->push_back(root);
while (!pCurVec->empty()) {
vector<int> dataVec;
for (vector<TreeNode*>::iterator it = pCurVec->begin(); it != pCurVec->end(); ++it) {
dataVec.push_back((*it)->val);
if ((*it)->left) {
pNextVec->push_back((*it)->left);
}
if ((*it)->right) {
pNextVec->push_back((*it)->right);
}
}
rtn.push_back(dataVec);
pCurVec->clear();
vector<TreeNode*> *tmp = pCurVec;
pCurVec = pNextVec;
pNextVec = tmp;
}
return rtn;
}
};