题目描述
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
示例1
输入
{1,2}
输出
[[1],[2]]
示例2
输入
{1,2,3,4,#,#,5}
输出
[[1],[2,3],[4,5]]
牛客链接:
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3?tpId=188&&tqId=35315&rp=1&ru=/ta/job-code-high-week&qru=/ta/job-code-high-week/question-ranking
解题思路:
首先层次遍历使用队列
用node.size()来获取当前层数据的数据量
然后用cur来记录当前层的数据,每遍历完一层,将cur中的数据直接push_back到num中
代码:
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
vector<vector<int>> num;
if (root == NULL) {
return num;
}
queue<TreeNode*> node;
node.push(root);
vector<int> cur;
while(!node.empty()) {
cur.clear();
int n = node.size();
for(int i=0; i<n; i++) {
TreeNode* temp = node.front();
if(temp->left != NULL) {
node.push(temp->left);
}
if(temp->right != NULL) {
node.push(temp->right);
}
node.pop();
cur.push_back(temp->val);
}
num.push_back(cur);
}
return num;
}
};