合集-LeetCode 树
摘要:题目链接 687. 最长同值路径 思路 “树的直径”的简单变体 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 注意维护当前状态:当左二子的值与本节点值不同时,要更新 时间复杂度 空间复杂度 \(O
阅读全文
摘要:题目链接 124. 二叉树中的最大路径和 思路 “树的直径”&“树形DP” 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 经典的树形DP:当前状态为左右儿子与当前节点值之和,返回时注意应当返回 \(\max(0, v + \max(v_{l
阅读全文
摘要:题目链接 2385. 感染二叉树需要的总时间 思路 识别为“树的直径” 题解链接 从两次遍历到一次遍历(Python/Java/C++/Go/JS/Rust) 关键点 1. 返回值为(感染时间, 是否包含感染源) 2. 分为三种情况:本节点为感染源、左儿子(或右儿子)为感染源、该子树无感染源 时间复
阅读全文
摘要:题目链接 144. 二叉树的前序遍历 思路 二叉树前序遍历-经典模板题 题解链接 官方题解 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def preorderTraversal(self, root: Optional[Tre
阅读全文
摘要:题目链接 94. 二叉树的中序遍历 思路 二叉树的中序遍历-经典模板题 题解链接 官方题解 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def inorderTraversal(self, root: Optional[Tree
阅读全文
摘要:题目链接 145. 二叉树的后序遍历 思路 二叉树的后序遍历-模板题 题解链接 官方题解 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def postorderTraversal(self, root: Optional[Tre
阅读全文
摘要:题目链接 872. 叶子相似的树 思路 通过DFS的方式得到树的叶子节点序列 题解链接 官方题解 关键点 yeild from dfs(node.left) 时间复杂度 空间复杂度 代码实现: class Solution: def lea
阅读全文
摘要:题目链接 LCP 44. 开幕式焰火 思路 树的遍历 题解链接 Go DFS+哈希表 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def numColor(self, root: TreeNode) -> int: seen =
阅读全文
摘要:题目链接 404. 左叶子之和 思路 树的遍历(DFS) 题解链接 官方题解 关键点 无 时间复杂度 空间复杂度 代码实现: class Solution: def sumOfLeftLeaves(self, root: Optional[TreeNode]) -
阅读全文
摘要:题目链接 671. 二叉树中第二小的节点 思路 树的遍历(DFS) 题解链接 官方题解 关键点 利用树的性质进行适当剪枝:1. 树的根节点为全局最小点 2. 父节点的值为该子树的最小值 时间复杂度 空间复杂度 代码实现: class Solution: def f
阅读全文
摘要:题目链接 662. 二叉树最大宽度 思路 BFS+层次遍历 题解链接 官方题解 关键点 与传统层次遍历的差异点:为节点进行编码,最大宽度为队列中最后节点与最初节点之间的节点数量 时间复杂度 空间复杂度 代码实现: class Solution: def width
阅读全文