背景

本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了 三个简单、两个中等、一个困难 等级的题目,共计三十道题,利用三十天的时间完成这组刻意练习。

本次任务的知识点:树

是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由 n(n>0) 个有限节点组成的一个具有层次关系的集合。

把它叫做「树」是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

它具有以下的特点:

  • 每个节点都只有有限个子节点或无子节点;
  • 没有父节点的节点称为根节点;
  • 每一个非根节点有且只有一个父节点;
  • 除了根节点外,每个子节点可以分为多个不相交的子树;
  • 树里面没有环路。

题目

  • 题号:104
  • 难度:简单
  • https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7]

    3/ \9  20/  \15   7

返回它的最大深度 3 。


实现

第一种:采用层次遍历的思路

  • 执行结果:通过
  • 执行用时:108 ms, 在所有 C# 提交中击败了 88.13% 的用户
  • 内存消耗:25.5 MB, 在所有 C# 提交中击败了 5.97% 的用户
/*** Definition for a binary tree node.* public class TreeNode {*     public int val;*     public TreeNode left;*     public TreeNode right;*     public TreeNode(int x) { val = x; }* }*/
public class Solution
{public int MaxDepth(TreeNode root){if (root == null)return 0;Queue<TreeNode> q = new Queue<TreeNode>();int deep = 0;q.Enqueue(root);while (q.Count != 0){deep++;int count = 0;int size = q.Count;while (count < size){TreeNode node = q.Dequeue();count++;if (node.left != null)q.Enqueue(node.left);if (node.right != null)q.Enqueue(node.right);}}return deep;}
}

第二种:利用递归

思路:递归分别求左右子树的最大深度,并加到原有层数上,最后返回两者中的最大值。

  • 执行结果:通过
  • 执行用时:132 ms, 在所有 C# 提交中击败了 16.62% 的用户
  • 内存消耗:25.5 MB, 在所有 C# 提交中击败了 6.06% 的用户
/*** Definition for a binary tree node.* public class TreeNode {*     public int val;*     public TreeNode left;*     public TreeNode right;*     public TreeNode(int x) { val = x; }* }*/
public class Solution
{public int MaxDepth(TreeNode root){if (root == null)return 0;int llen = 1;int rlen = 1;if (root.left != null){llen += MaxDepth(root.left);}if (root.right != null){rlen += MaxDepth(root.right);}return llen > rlen ? llen : rlen;}
}

往期活动

LSGO软件技术团队会定期开展提升编程技能的刻意练习活动,希望大家能够参与进来一起刻意练习,一起学习进步!

  • Python基础刻意练习活动即将开启,你参加吗?
  • Task01:变量、运算符与数据类型
  • Task02:条件与循环
  • Task03:列表与元组
  • Task04:字符串与序列
  • Task05:函数与Lambda表达式
  • Task06:字典与集合
  • Task07:文件与文件系统
  • Task08:异常处理
  • Task09:else 与 with 语句
  • Task10:类与对象
  • Task11:魔法方法
  • Task12:模块

我是 终身学习者“老马”,一个长期践行“结伴式学习”理念的 中年大叔

我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。

愿我们一起学习,一起进步,相互陪伴,共同成长。

后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:

刻意练习:LeetCode实战 -- Task21. 二叉树的最大深度相关推荐

  1. LeetCode实战:二叉树的最大深度

    题目英文 Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the ...

  2. LeetCode实战:二叉树的最近公共祖先

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...

  3. LeetCode实战:二叉树中的最大路径和

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a non ...

  4. 20190830:(leetcode习题)二叉树的最大深度

    二叉树的最大深度 题目 大致思路 代码实现 题目 大致思路 递归实现:当前节点深度为子节点的深度+1 直接遍历查找:逐次记录深度即可 代码实现 public int maxDepth(TreeNode ...

  5. 刻意练习:LeetCode实战 -- Task22. 二叉树的中序遍历

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  6. [Leetcode总结] 104.二叉树的最大深度

    给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], ...

  7. leetcode系列-104.二叉树的最大深度

    题目描述:给定一个二叉树,找出其最大深度.二叉树的深度为根节点到最远叶子节点的最长路径上的节点数.说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15, ...

  8. LeetCode实战:排序链表

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Sort a link ...

  9. LeetCode实战:除自身以外数组的乘积

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given an ar ...

最新文章

  1. 如何理解和评价机器学习中的表达能力、训练难度和泛化性能
  2. PNAS:人类首次利用新型脑磁图可视化快速大脑信号
  3. saej1929_(1929年-2020年)
  4. skywalking(2)
  5. linux下安装TensorFlow(centos)
  6. 动态规划问题中找零问题 --C语言实现
  7. RWMutex的一道面试题
  8. 亚马逊EC2根硬盘空间扩容
  9. Web前端工作笔记007---h5 canvas_雨滴头像合成_图像合成_合成雨滴头像
  10. 办公专用计算机配置,办公电脑用什么配置的好 2017办公电脑配置推荐
  11. 大话西游免费版最新服务器是,2020年4月1日服务器数据互通公告
  12. linux 排查cpu负载过高原因
  13. 苹果触控鼠标和触控板 (4) jitouch
  14. 基于facenet人脸识别设计文档
  15. 网络安全产业快速递增网络安全体系以形成持有NISP和CISP证书可加分
  16. PostgreSQL分区
  17. 技术汇总:第七章:三种验证方式
  18. esxi突然启动不起来了!显示:Error loading /sb.v00
  19. hihoCoder 1272 买零食
  20. IDEA背景颜色设置问题

热门文章

  1. unity加载ab后,场景shader不起效问题(物件表现黑色)
  2. C++ 经常使用类 string类
  3. 西门子PLC学习笔记二-(工作记录)
  4. centos 6.4 SVN服务器多个项目的权限分组管理
  5. 浅析flex中的焦点focus
  6. CSSA email list
  7. 屏蔽“网页上有错误”提示,屏蔽java script 错误的代码
  8. SMS系列之六:利用SMS实现操作系统的补丁分发
  9. telnet 如何退出
  10. Flash Player漏洞利用Exploiting Flash Reliably