class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> node_q; //节点入队和出队操作容器
vector<int> n_process; //存储每层节点的val
vector<vector<int>> n_result; //存储最终结果
if(root != nullptr) { //判断头结点是否为空,并将头结点插入队列中
node_q.push(root);
}
while(!node_q.empty()) {
int size = node_q.size(); //每次while循环时,计算当前队列大小,用作每层节点的循环
for(int i = 0; i < size; i++) {
root = node_q.front();
node_q.pop();
n_process.push_back(root->val); //对头节点出队操作后,保存其节点值
// 寻找当前出队节点的左右孩子,并将其孩子入队
if(root->left != nullptr) {
node_q.push(root->left);
}
if(root->right != nullptr) {
node_q.push(root->right);
}
}
// 每层节点出队完毕后,即可将节点值暂存容器插入最终结果容器中
n_result.push_back(n_process);
n_process.clear(); //每层节点出队完毕后,清空暂存容器,以保证下层的使用
}
return n_result;
}
};
力扣刷题记录-二叉树层序遍历C++
最新推荐文章于 2022-06-04 21:53:53 发布