大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

二叉树的层次遍历,队列的应用。

题目解答方法的文字分析

这个题目要求我们按照从上到下、从左到右的顺序,返回每层二叉树节点的编号拼接成的字符串。我们可以使用队列来进行层次遍历,然后将每一层的节点值转化为字符串并拼接起来,最终得到每层的节点编号字符串。

具体步骤如下:

  1. 初始化一个队列,将根节点入队。
  2. 循环遍历队列,每次取出当前层的节点,并将其值转为字符串,拼接到当前层字符串中。
  3. 将当前层的字符串加入结果向量中。
  4. 将当前节点的左右子节点入队。
  5. 当队列为空时,所有层次遍历结束,返回结果向量。

本题解析所用的编程语言

C++

完整且正确的编程代码

/**
 * Definition for binary tree.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
class Solution {
public:
    vector<string> levelOrder(TreeNode* root) {
        vector<string> result; // 存储最终的结果
        if (!root) {
            return result; // 空树直接返回空结果
        }

        queue<TreeNode*> q; // 队列用于层次遍历
        q.push(root); // 将根节点入队

        while (!q.empty()) {
            int levelSize = q.size(); // 当前层的节点数
            string levelStr; // 存储当前层的节点编号字符串

            for (int i = 0; i < levelSize; ++i) {
                TreeNode* node = q.front(); // 取出队首节点
                q.pop();

                levelStr += to_string(node->val); // 将节点值转为字符串并拼接到当前层字符串

                if (node->left) {
                    q.push(node->left); // 左子节点入队
                }
                if (node->right) {
                    q.push(node->right); // 右子节点入队
                }
            }

            result.push_back(levelStr); // 将当前层的字符串加入结果向量中
        }

        return result; // 返回最终结果
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!