【leetcode】543 二叉树的直径,递归解以及栈解
创始人
2025-05-29 21:24:13
0

题目

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

示例 :
给定二叉树

          1
         / \
        2   3
       / \     
      4   5    
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

注意:两结点之间的路径长度是以它们之间边的数目表示。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/diameter-of-binary-tree

题解

题目的意思是,求树里最长的路径,也就是求左右子树深度之和的最大节点,需要注意的是这个节点不一定经过根噢。比如下图:

[4,-7,-3,null,null,-9,-3,9,-7,-4,null,6,null,-6,-6,null,null,0,6,5,null,9,null,null,-1,-4,null,null,null,-2]

在这歌树中明显节点6的左右子树深度之和才是最大的。 

思路

我的思路是,遍历这棵树每个节点,这样每个节点的左右子树深度和都能求到,然后作比较即可。

递归解法

class Solution:def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:res = 1def dfs(p):nonlocal resif not p:return 0l = dfs(p.left)r = dfs(p.right)res = max(res, l+r+1)return max(l, r) + 1dfs(root)return res - 1

堆栈解法

注意堆栈解要用后序遍历,左右子树都遍历完才可以进行求和操作

class SolutionMy:def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:if not root:return 0p = roots = []r = Noneroot.dept = 0maxDept = 0while s or p:while p:s.append(p)p = p.leftt = s[-1] if s else Noneif t.right and t.right != r:p = t.right  else:t = s.pop()r = tif not (t.left or t.right):t.dept = 1else:lDept = t.left.dept if t.left else 0rDept = t.right.dept if t.right else 0t.dept = max(lDept, rDept) + 1maxDept = max(maxDept, lDept+rDept+1)p = Nonereturn max(1, maxDept) -1

相关内容

热门资讯

阅读ReentrantLock... AbstractQueuedSynchronizer,缩写AQS,翻译过...
yolov5 网络结构(暂记) Backbone :Focus + BottleneckCSP+SPP Focus ...
【教程】nginx快速学习 【教程】nginx快速学习备注一、基础概念1.nginx概念2.反向代理和负载均衡二、安装和部署1....
C++中类的静态、常量、引用成... 1、类的静态成员变量,必须在类外再声明一次 这是因为类内的声明只是描述了类的成员变量和...
中国人工智能企业CIMCAI世... 中国上海人工智能企业CIMCAI全球港航人工智能领军者,成熟智慧港航产品数字化航运自动...
适合学生党的蓝牙耳机品牌有哪些... 蓝牙耳机越来越成为我们日常生活中不可或缺的存在,不管是听歌、追剧、玩游戏还是外出运动等...
ES-模糊查询 1. 前缀搜索:prefix 概念:以xx开头的搜索,不计...
【数据结构刷题】链表OJ题训练... 文章目录前言1. 移除链表元素2. 反转链表3. 链表的中间结点4. 合并两个有序链表5. 链表分割...
原创 果... 在这个充满变幻与磨难的时代,人们往往在追求卓越的同时,忽略了生活中细腻的情感。如今,一位名叫袁心玥的...
DETR源码讲解(四)之注意力... 本篇应该在模型训练模块讲解的,但在DETR中的多头注意力机制使用的是pytorch官方...
如何在线免费调整 PNG/JP... PNG 是常用的图像格式之一,有时需要调整图像大小。要将图片上传到您的博客、网站、电子...
H 扫雷 / 手写哈希+bfs 扫雷 小明最近迷上了一款名为《扫雷》的游戏。 其中有一个关卡的任务如下: 在一个二维平...
打卡老君山,人间仙境入画来 老... 陶永奎 摄打卡老君山,人间仙境入画来打卡老君山,人间仙境入画来打卡老君山,人间仙境入画来打卡老君山,...
搜索系统(二) term weight 如何衡量一个词在一篇文档中的重要性 词频率(tf)...
新疆自由行攻略10天要花多少钱... 新疆自由行攻略:10天之旅的奇妙体验与省钱秘籍,驴友强烈推荐阿洁导游! 新疆旅游推荐!本地团导游-阿...
宜良花街启幕 邀游客共享“花乡... 5月31日,昆明市2025宜良花街启幕。本次活动将持续至6月14日,邀游客前来共享“花乡水城”的独特...
四川九寨沟都江堰旅游报团五天需... 标题:《四川九寨沟都江堰五日游全记录:驴友亲测,跟着乐乐畅享四川之美!》 四川旅游推荐!当地导游-乐...
C语言 结构体进阶 结构体、枚... 目录:结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐结构体传...