求二叉树的层序遍历(牛客网)
题目:给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
vector<vector<int>> res;
if (root == NULL)
return res;
queue<TreeNode *> tree;
tree.push(root);
int curNum = 1, nextNum = 0;
vector<int> cow;
while (!tree.empty()) {
TreeNode *temp = tree.front();
tree.pop();
curNum--;
cow.push_back(temp->val);
if (temp->left) {
tree.push(temp->left);
nextNum++;
}
if (temp->right) {
tree.push(temp->right);
nextNum++;
}
if (curNum == 0) {
res.push_back(cow);
curNum = nextNum;
nextNum = 0;
cow.erase(cow.begin(), cow.end());
}
}
return res;
}
};