题解 | #二叉树的最小深度#基于bfs

二叉树的最小深度

https://www.nowcoder.com/practice/e08819cfdeb34985a8de9c4e6562e724

/**
 * struct TreeNode {
 *  int val;
 *  struct TreeNode *left;
 *  struct TreeNode *right;
 * };
 */

class Solution {
  public:
    /**
     *
     * @param root TreeNode类
     * @return int整型
     */
    int run(TreeNode* root) {
        if (root == nullptr) return 0;

        // 使用队列进行层次遍历
        queue<TreeNode*> q;
        q.push(root);
        int depth = 1; // 根节点的深度为1

        while (!q.empty()) {
            int levelSize = q.size(); // 当前层的节点数
            for (int i = 0; i < levelSize; ++i) {
                TreeNode* node = q.front();
                q.pop();

                // 如果当前节点是叶子节点,返回当前深度
                if (node->left == nullptr && node->right == nullptr) {
                    return depth;
                }

                // 将当前节点的子节点加入队列
                if (node->left != nullptr) {
                    q.push(node->left);
                }
                if (node->right != nullptr) {
                    q.push(node->right);
                }
            }
            depth++; // 每处理完一层,深度加1
        }

        return depth; // 理论上不会到达这里
    }
};

全部评论

相关推荐

书海为家:实习是成为大厂正式员工很好的敲门砖,看您的简历中有一段实习经历,挺好的。我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己实习时做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务