1.用队列法对二叉树做层次遍历。没什么特别的。
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
vector<vector<int> > res = vector<vector<int>>();
deque<TreeNode*> queue = deque<TreeNode*>();
if (root!=nullptr) {
queue.push_back(root);
}
int nextLevelLength = 1;
while(queue.size()>0) {
int newNextLevelLength = 0;
vector<int> currentLevel = vector<int>();
for(int i=0;i<nextLevelLength;i++) {
TreeNode* node = queue.front();
queue.pop_front();
if(node->left!=nullptr) {
newNextLevelLength++;
queue.push_back(node->left);
}
if(node->right!=nullptr) {
newNextLevelLength++;
queue.push_back(node->right);
}
currentLevel.push_back(node->val);
}
res.push_back(currentLevel);
nextLevelLength = newNextLevelLength;
}
return res;
}
};