剑指offer-python刷题-二叉树的深度
发布日期:2021-07-28 12:03:13
浏览次数:3
分类:技术文章
本文共 1314 字,大约阅读时间需要 4 分钟。
题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
方法一:
每次一做到二叉树,总会情不自禁的想用递归算法。刚开始主要是忽略了初始条件,当没有根结点时,算法返回为0;只有一个根结点时,算法返回为1。然后要输出左子树和右子树中深度较大的一棵树的继续迭代。
class Solution: def TreeDepth(self, pRoot): # write code here if not pRoot: return 0 dept = 0 while pRoot: dept += 1 if self.TreeDepth(pRoot.left) > self.TreeDepth(pRoot.right): pRoot = pRoot.left else: pRoot = pRoot.right return dept
改进的递归算法:
直接三行就能解决的事情...比较大小的部分使用max函数
class Solution: def TreeDepth(self, pRoot): # write code here if not pRoot: return 0 left = self.TreeDepth(pRoot.left) right = self.TreeDepth(pRoot.right) return max(left, right) + 1
方法二:
对二叉树按层进行遍历。创建一个列表,用于存放每一层中的所有结点,在每层中,先将原有结点逐个弹出,将其子结点分别加入到列表尾部。(类似于队列的结构)
class Solution: def TreeDepth(self, pRoot): # write code here if not pRoot: return 0 level = [] level.append(pRoot) dept = 0 while level: dept += 1 for i in range(len(level)): node = level.pop(0) if node.left: level.append(node.left) if node.right: level.append(node.right) return dept
转载地址:https://blog.csdn.net/sinat_42437278/article/details/117704357 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月20日 04时43分25秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
BiliBili 100+国际名校免费公开课整理分享
2019-04-27
清华大学计算机学科推荐学术会议和期刊列表
2019-04-27
中文医疗领域自然语言处理相关数据集、经典论文资源蒸馏分享
2019-04-27
2020年新-《机器学习算法入门》
2019-04-27
历史最全语音增强必读论文、数据集、工具包、书籍及应用整理分享
2019-04-27
机器学习基础教材-《统计学习与数据分析介绍》
2019-04-27
DL语音分离|抽取必读论文、数据集、代码工具整理分享
2019-04-27
机器学习百页书作者20年新作-机器学习工程实战
2019-04-27
MLSS 2020-Bengio-《机器学习暑期研究前沿学校》
2019-04-27
20年经典-《海量数据挖掘技术》
2019-04-27
互联网数据驱动力-《数据推动力-创造数据文化》
2019-04-27
搜索推荐-《搜素与推荐中的深度学习匹配(Deep Match)技术》
2019-04-27
强化学习/机器人学经典-策略规划算法原理
2019-04-27
2020最新互联网算法岗必读-算法设计与分析基础
2019-04-27
程序员必读-统计思考-程序员必备概率和统计知识
2019-04-27
【组队学习】【24期】Docker教程
2019-04-27
Datawhale组队学习周报(第010周)
2019-04-27
如何爬取知乎中问题的回答以及评论的数据?
2019-04-27
【组队学习】【25期】Datawhale组队学习内容介绍
2019-04-27
【青少年编程】黄羽恒:加减乘除法小测试
2019-04-27