如何求出python二叉树的深度
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,今天就跟大家聊聊有关如何求出python二叉树的深度,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。题目描述输入一棵二叉树的根节点,求该树的深度
千家信息网最后更新 2025年01月24日如何求出python二叉树的深度
今天就跟大家聊聊有关如何求出python二叉树的深度,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
题目描述
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
节点总数 <= 10000
题目样例
示例
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
题目思考
如果限制只能用递归或者迭代, 如何解决?
解决方案
方案 1
思路
先考虑递归做法, 尝试 DFS 我们可以这样构造递归方法: 传入节点, 返回当前节点的深度, 该深度是左右子树的最大深度+1 假设叶子节点的深度为 1, 显然根节点的深度就是整个树的最大深度了 递归出口即节点为空的情况, 此时深度为 0
复杂度
时间复杂度 O(N): 需要遍历整个树 空间复杂度 O(H): H 表示树的高度, 也即递归的栈的消耗
代码
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
# 递归出口, 空节点的情况
return 0
# 当前节点深度是左右子树的最大深度+1
return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))
# 也可以进一步简化为只需要一行代码..
# return 0 if not root else 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))
方案 2
思路
如果要求必须用迭代方式实现, 那方案 1 就不行了 迭代一般可以先尝试 BFS, 这道题也不例外 通过分析题目, 显然这里的深度就是指 BFS 的层数, 所以完全可以利用 剑指 Offer 32 - II. 从上到下打印二叉树 II - leetcode 剑指 offer 系列的做法得出层数, 只是不需要打印出每一层的节点, 只需要统计层数即可. 不清楚的同学可以先看看那道题的思路~ 下面代码对必要的步骤有详细的解释, 方便大家理解
复杂度
时间复杂度 O(N): 需要遍历整个树 空间复杂度 O(N): 队列的空间消耗
代码
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
q = [root]
res = 0
while q:
# 当前层节点数目
curlen = len(q)
for node in q[:curlen]:
# 只追加非空子节点
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
# 队列切片, 开始处理下一层
q = q[curlen:]
# 当前层遍历完毕, 深度+1
res += 1
return res
看完上述内容,你们对如何求出python二叉树的深度有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
深度
节点
复杂
复杂度
递归
最大
代码
方案
题目
内容
思路
空间
迭代
求出
做法
就是
情况
时间
路径
队列
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全工作规划
工行软件开发中心经理
软件开发和算法岗
怎么在数据库分条导数据
吨数据中心服务器冷却液环评
网络安全法配套规范
上海徐汇网络安全
产品软件开发有哪些
软件开发企业税收政策分析
数据库运维自测
服务器如何用电池给主板放电
对计算机网络技术的意见
阿椰讲网络安全
网络安全需要考证书吗
太古网络技术有限公司招聘
北邮的网络安全空间研究生考哪些
数据库初始化过程
高乐施软件开发有限公司
网络安全的责任心
步态识别数据库的创建
sqlite复制数据库
济南软件开发销售招聘信息
软件开发的限制
阳泉农行软件开发
韩服dnf服务器正在维护
网络技术开发包括
戴尔服务器更新驱动不兼容
电子工作邮箱制度网络安全
大话数据库 mobi
电脑应用专业和网络技术哪个好