什么系统网站好,郴州建设工程信息网站,电子商务网站开发 ppt,图怪兽logo设计官网题目
给你二叉树的根节点 root #xff0c;返回其节点值的 层序遍历 。 #xff08;即逐层地#xff0c;从左到右访问所有节点#xff09;。
示例 输入#xff1a;root [3,9,20,null,null,15,7]
输出#xff1a;[[3],[9,20],[15,7]]输入#xff1a;root [1]
输出返回其节点值的 层序遍历 。 即逐层地从左到右访问所有节点。
示例 输入root [3,9,20,null,null,15,7]
输出[[3],[9,20],[15,7]]输入root [1]
输出[[1]]输入root []
输出[]思路 创建一个队列queue用于存储待处理的二叉树节点。 将根节点放入队列中。 开始进行层序遍历
当队列不为空时表示还有节点需要处理。每次处理一层的节点时先获取当前队列的大小这个大小即为当前层的节点数目。遍历当前层级的节点 依次取出队首的节点将其值存入当前层级的结果中。如果该节点有左子节点将左子节点加入队列。如果该节点有右子节点将右子节点加入队列。
将每一层的节点值存入最终的结果中直至队列为空完成整个层序遍历。
Code
class Solution {
public:vectorvectorint levelOrder(TreeNode* root) {vectorvectorint result; // 存储层序遍历的结果if (root NULL) {return result; // 如果根节点为空直接返回空的结果}queueTreeNode* q;q.push(root); // 将根节点放入队列中// 开始进行层序遍历while (!q.empty()) {int level_size q.size(); // 获取当前层级的节点数量vectorint level_values; // 存储当前层级节点的值// 遍历当前层级的节点for (int i 0; i level_size; i) {TreeNode* node q.front();q.pop(); // 出队level_values.push_back(node-val); // 存储当前节点的值// 将当前节点的子节点如果存在加入队列中if (node-left) {q.push(node-left);}if (node-right) {q.push(node-right);}}result.push_back(level_values); // 将当前层级的节点值存入最终结果中}return result;}
};