如何求出python二叉树的深度
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,今天就跟大家聊聊有关如何求出python二叉树的深度,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。题目描述输入一棵二叉树的根节点,求该树的深度
千家信息网最后更新 2025年12月03日如何求出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安全错误
数据库的锁怎样保障安全
兴化市百世网络技术有限公司
武汉期货交易软件开发
网络安全线上家长会反馈怎么写
网络安全省察工作
软件开发师包装简历
数据怎么存入数据库
公司接收软件开发任务分录
新乡市磐石网络技术电话
云财务代账与管理服务器
网络安全人民资料
广电网络技术总监竞聘演讲
数据库的安全保护测试题
长沙crm软件开发服务
云岭职工app网络安全法
Access数据库罗斯文
网络技术专用英文名是什么
数据库时间 dua
苏州打造智慧工厂软件开发
辖区网络安全保障工作计划
hpe服务器管理地址
嘉定区互联网软件开发订制价格
夏青林网络安全产业园
海外服务器免费ip地址怎么用
订单管理软件 有没有数据库
数据库如何存储富文本格式
怀旧服最新开门服务器进度
正数网络技术有限公司研发运营
服务器容灾备份 开源
求职软件开发的自我评价
数据库sql上机实验题2