【LeetCode刷题日记】[104. 二叉树的最大深度]

2023-05-16

一、题目

https://raw.githubusercontent.com/xkyvvv/blogpic2/main/img/image-20211121225124335.png

二、解析

在这里插入图片描述

C++

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (root == nullptr) return 0;
        return max(maxDepth(root->left), maxDepth(root->right)) + 1;
    }
};

C

int maxDepth(struct TreeNode *root) {
    if (root == NULL) return 0;
    return fmax(maxDepth(root->left), maxDepth(root->right)) + 1;
}

https://raw.githubusercontent.com/xkyvvv/blogpic2/main/img/image-20211121225701994.png

C++

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (root == nullptr) return 0;
        queue<TreeNode*> Q;
        Q.push(root);
        int ans = 0;
        while (!Q.empty()) {
            int sz = Q.size();
            while (sz > 0) {
                TreeNode* node = Q.front();Q.pop();
                if (node->left) Q.push(node->left);
                if (node->right) Q.push(node->right);
                sz -= 1;
            }
            ans += 1;
        } 
        return ans;
    }
};

C

struct QueNode {
    struct TreeNode *p;
    struct QueNode *next;
};

void init(struct QueNode **p, struct TreeNode *t) {
    (*p) = (struct QueNode *)malloc(sizeof(struct QueNode));
    (*p)->p = t;
    (*p)->next = NULL;
}

int maxDepth(struct TreeNode *root) {
    if (root == NULL) return 0;
    struct QueNode *left, *right;
    init(&left, root);
    right = left;
    int ans = 0, sz = 1, tmp = 0;
    while (left != NULL) {
        tmp = 0;
        while (sz > 0) {
            if (left->p->left != NULL) {
                init(&right->next, left->p->left);
                right = right->next;
                tmp++;
            }
            if (left->p->right != NULL) {
                init(&right->next, left->p->right);
                right = right->next;
                tmp++;
            }
            left = left->next;
            sz--;
        }
        sz += tmp;
        ans++;
    }
    return ans;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【LeetCode刷题日记】[104. 二叉树的最大深度] 的相关文章

随机推荐

  • VxWorks几种常用的延时方法

    转载于 xff1a https www vxworks net app 144 time facilities of vxworks 自用 VxWorks系统提供灵活多样的定时器机制 xff0c 有多种接口可以方便地实现延时 xff0c 文
  • 推荐一些嵌入式、C/C++的开源库和项目

    前言 想用代码实现一个功能时 xff0c 我们可以先看看是否有前辈已经实现了该功能 xff0c 并且开源分享在网上 一般我们自己造出来的轮子的可用性基本上是很难和大神们造的轮子相比的 因此多了解一下优秀的开源库的使用 xff0c 可以让我们
  • 对于LSB的理解(位的LSB、模数转换的LSB)

    之前对于LSB的理解 xff1a 最高有效位 xff08 MSB xff09 指二进制中最高值的比特 在16比特的数字音频中 xff0c 其第1个比特便对16bit的字的数值有最大的影响 例如 xff0c 在十进制的15389这一数字中 x
  • C语言跳转语句(break语句,continue语句,goto语句,return语句,跳转函数setjmp和longjmp)

    文章目录 一 前言二 跳转语句1 break 语句2 continue 语句3 goto 语句4 return 语句 三 跳转函数1 C标准库 一 前言 跳转语句 xff08 jump statement xff09 可以中断当前程序的执行
  • C 语言跳转表的实现及在嵌入式设备中的应用

    转载于https cloud tencent com developer article 1797595 跳转表的概念 引用笔者在 Wikipedia 上看到的关于跳转表的概念 xff0c In computer programming a
  • 软件版本控制,软件推荐及使用教程

    文章目录 一 版本控制系统分类1 版本控制系统的概念2 本地版本控制系统 3 集中式版本控制系统 4 分布式版本控制系统 Git 二 版本控制软件使用简明教程1 集中式版本控制系统 SVN2 分布式版本控制系统 把文件添加到版本库 工作区
  • 串口通信库总结

    C 43 43 开源库 Windows和linux下好用的串口通讯API库 serial 在 C 43 43 xff0c 跨平台 xff0c 串口库编写 https github com wjwwood serial boost网络串口通信
  • 【C语言开源库】lw_oopc:轻量级的C语言面向对象编程框架

    文章目录 轻量级的面向对象C语言编程框架LW OOPC介绍摘要s为什么要用面向对象 为什么不直接使用C 43 43 LW OOPC是什么 LW OOPC宏介绍问题描述解决方案方案的可扩展性如何 LW OOPC最佳实践LW OOPC的优点LW
  • Go语言基础语法入门

    一 下载及安装 被河蟹了 xff01 xff01 xff01 二 入门教程 Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前 xff0c 让我们先来了解 Go 语言最简单程序的结构 Go Hello World 实例 Go 语
  • docker环境安装tomcat

    一 安装tomcat 1 查找tomcat镜像 docker search tomcat 2 安装指定版本的tomcat镜像 docker pull tomcat 9 0 二 启动tomcat镜像 docker run d p 8080 8
  • Go语言并发详解

    文章目录 一 Go语言并发简述 xff08 并发的优势 xff09 进程 线程并发 并行协程 线程Goroutine 介绍channel 二 Go语言goroutine xff08 轻量级线程 xff09 使用普通函数创建 goroutin
  • C/C++ 服务器/后台开发学习路线总结及准备

    文章目录 一 前言二 总结网上的学习路线三 之前的一些相关博客整理 一 前言 最近要新开一个非常重要的系列 xff0c C C 43 43 服务器 后台开发 这个系列将会包括非常多的内容 xff0c 难度也会比之前的系列大很多 xff0c
  • 学了十几种编程语言后,我有哪些感受?

    转一下鱼皮大佬的文章 xff1a https mp weixin qq com s Eier53 flKEtxj yGIQs8A 大家好 xff0c 我是鱼皮 学编程 5 年多了 xff0c 我学过十几种编程语言 xff0c 比如 C C
  • 【C/C++服务器开发】什么是服务器?服务器分类及构建一个简单的服务器系统

    文章目录 一 服务器的定义二 服务器的分类1 外形2 CPU指令集3 用途1 web服务器WEB简介协议WWW简介发展和特点服务器特点工作原理 2 应用服务器定义分类静态动态 概括区别应用服务器和WEB服务器的区别Web型应用程序型 3 文
  • 函数式编程初探及Haskell简介

    诞生50多年之后 xff0c 函数式编程 xff08 functional programming xff09 开始获得越来越多的关注 不仅最古老的函数式语言Lisp重获青春 xff0c 而且新的函数式语言层出不穷 xff0c 比如Erla
  • 【C/C++服务器开发】同步与异步、阻塞与非阻塞、同步调用和异步调用的概念

    同步与异步 首先我们要明确的是 xff0c 同步和异步都是针对两个或者两个以上的事物来说的 比如当我们在网上购物看中一件物品 xff0c 然后去浏览该商品详情的时候 xff0c 首先页面会先发送一个请求 xff0c 后台服务器查询对应商品的
  • C语言注册机制原理及实现

    文章目录 一 前言二 注册机制1 问题描述2 如何解决这种问题定时器运用注册机制定时器的使用方法 一 前言 想要理解注册机制 xff0c 首先我们需要对函数指针 xff0c 回调函数有一定的了解 之前我的一篇博客已经详细的讲解了 xff1a
  • 【C/C++服务器开发】socket网络编程函数接口详解

    文章目录 一 前言TCP 网络编程结合三次握手连接的 TCP socket结合四次次挥手的 TCP socket 二 socket常用函数和数据结构1 socket 函数2 bind 函数sockaddr in 结构体in addr 结构体
  • 【C/C++服务器开发】socket网络编程函数接口的灵活运用

    文章目录 一 前言二 服务器代码实例1 V1 0 xff1a 一个最简单的服务器实例2 V1 1 xff1a 可以持续响应客户端请求的服务器 一 前言 往期博客回顾 xff1a C C 43 43 服务器 后台开发学习路线总结及准备 C C
  • 【LeetCode刷题日记】[104. 二叉树的最大深度]

    一 题目 二 解析 C 43 43 span class token keyword class span span class token class name Solution span span class token punctua