力扣-第104题--二叉树的最大深度(python)--详细解析--逐步调试
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
递归法:
解题思路:
1、首先判断根目录是否为空节点,如果是,返回0,即深度为0;
if root == None: return 0
2、给ans赋初值为0;
self.ans = 0
3、如果存在根节点root,则将root和1分别传递给dfs()方法中root和path。
self.dfs(root, 1)
4、这里dfs()方法,如下所示。
- 首先判断 root.right 和 root.left 是否存在,如果两个都不存在,则将
max(self.ans, path)--->max(0,1) = 1
就是说如果只存在根节点root,而root.right 和 root.left不存在,则深度为1。
- 再就是else,不论是存在 root.right 或者 root.left 都意味着深度加上1。
max(self.ans, path)--->max(1,1+1) = max(1,2) = 2
5、如果深度超过2,我们可以看到else后面的语句,不断地重新赋值给root和path,直到为空,返回当前max(ans,path),相当于再方法dfs()中循环。
def dfs(self, root, path):if not root.right and not root.left:self.ans = max(self.ans, path)else:if root.left:self.dfs(root.left, path + 1)if root.right:self.dfs(root.right, path + 1)
完整代码:
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/solution/104-er-cha-shu-de-zui-da-shen-du-python-upo6q/
class Solution:def maxDepth(self, root: TreeNode) -> int:if root == None: return 0 self.ans = 0self.dfs(root, 1)return self.ansdef dfs(self, root, path):if not root.right and not root.left:self.ans = max(self.ans, path)else:if root.left:self.dfs(root.left, path + 1)if root.right:self.dfs(root.right, path + 1)
力扣-第104题--二叉树的最大深度(python)--详细解析--逐步调试相关推荐
- 力扣第236题“二叉树的最近公共先祖”的解题思路
参考代码: class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {i ...
- 领扣-104/111 二叉树的最大深度 Maximum Depth of Binary Tree MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Leetcode-How-What 力扣Leetcode刷题指南
Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...
- 算法面试不懂这6大数据结构知识一定挂!(附力扣LeetCode真题讲解)
本文作者:苏勇,Google 资深技术工程师 首发地址:https://mp.weixin.qq.com/s/u8pvmupISQ5D4kGIkgfKbA 在互联网行业的算法面试中经常会被考到数据结构 ...
- 【JAVA】交错字符串——力扣每日一题(六)(2020.07.18)
目录 题目:97. 交错字符串 思路 如果你从本文中学习到丝毫知识,那么请您点点关注.点赞.评论和收藏 大家好,我是爱做梦的鱼,我是东北大学大数据实验班大三的小菜鸡,非常渴望优秀,羡慕优秀的人,个人博 ...
- leetcode 力扣每日一题系列详解——总目录
这是总目录,该系列持续更新中........ leetcode 力扣每日一题系列详解--总目录
- 【爬虫】力扣每日一题每天自动邮件提醒!!!
使用python实现了一个力扣每日一题每天自动邮件提醒的小爬虫,小但实用!!! 文章目录 A.需求来源与分析 B.技术角度分析 C.具体分析步骤 1.接口协议分析 2.发邮件 3.写crontab放服 ...
- 力扣数据结构刷题Day1-4
力扣数据结构刷题Day1-4 文章目录 力扣数据结构刷题Day1-4 前言 一.小试牛刀 存在重复元素(L217) 最大子数组和(L53) 动态规划法 贪心法 分治法 两数之和(L1) 合并两个有序数 ...
- python【力扣LeetCode算法题库】104-二叉树的最大深度
二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,nu ...
最新文章
- 工业环境中对机器学习的行业视角
- python合并word内容相同单元格_python:怎样合并文档中有重复部分的行?
- poj1220:高精度进制转换模板题
- log4j中配置日志文件相对路径方法
- .net core中使用缓存(cache)
- 软件项目组织管理(九)项目人力资源管理
- 程序员总结的:最没有学习效率的 5 种方法!你在用其中哪一种?
- java基础知识---IO常用基础操作(一)
- checkout 撤销修改_git命令(10):git 常用操作,撤销修改(2)
- grep 两个字符串_Linux运维工程师想要的12个grep指令
- 面试官:有了 for 循环,为什么还要 forEach ??
- 数据结构算法与应用c++语言描述 pdf +源代码,数据结构算法与应用-c++语言描述(清晰版).pdf...
- 【Jmeter+ant+Jenkins自动化持续集成】
- mybase6.0.4的license key的生成方法
- python研究生录取数据分析统计服_考研党必看!研究生报考录取比例数据查询方法...
- ios 出现log不打印 was compiled with optimization - stepping may behave oddly; variables may not be availa
- 提交和复位按钮的知识(Submit Reset Buttons)
- 2/8法则系列 | 你真的了解二八法则吗?
- 百度网盘撸用户羊毛是怎么一回事
- for_while循环作业
热门文章
- R语言可视化【ggplot2】
- android texturevideoview 缓存,TextureView实现VideoView
- 高校教师称大学生宿舍关系整体更趋冷漠
- 心的旅行——2009西藏行之林芝(四)
- 功能测试必备:抓包工具之谷歌开发者工具介绍及使用场景
- 3D人脸识别——人脸点云前处理
- 朱光潜《给青年的十二封信》
- IDEA汉化及如何改回英文界面版本
- Can‘t bind to ‘xxx‘ since it isn‘t a known property of ‘xxx‘,dom配置动态属性时候报错
- 卖家应该如何应对亚马逊多账号操作呢?