Day24 - 104.二叉树的最小深度


题目链接:https://leetcode.cn/problems/minimum-depth-of-binary-tree/ 1. 问题理解 题目要找的是 最小深度,意思是: 从 根节点 出发,到 最近的叶子节点(左右孩子都为 None)的路径上,节点数量最少的那条路径的节点数。 注意:必须到达叶

Day24 - 104.二叉树的最大深度


题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/ 1. 问题理解 题目要我们计算二叉树的最大深度。 最大深度:从根节点开始,一直走到最远的叶子节点,路径上节点的个数。 根节点算第 1 层,每往下一层

Day23 - 101.对称二叉树

题目链接:https://leetcode.cn/problems/symmetric-tree/description/ 1. 问题理解 题目要求判断一棵二叉树是否轴对称,也就是这棵树是否以根节点为轴左右镜像相等。 直观理解: 树的左子树和右子

Day23 - 226. 翻转二叉树

题目链接:https://leetcode.cn/problems/invert-binary-tree/description/ 1.问题理解 题目要求翻转一棵二叉树,即将每个节点的左子树和右子树交换位置。 简单理解:把树的每个节点的左右孩子都交换一下。

Day22 - 102. 二叉树的层序遍历


题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/description/ 1.问题理解 这个问题要求我们对二叉树进行层序遍历,也就是从上到下、从左到右逐层访问所有节点,最后将每一层的节点值以列表形式返回。 举个例

Day21 - 递归遍历(深度优先搜索)


144.二叉树的前序遍历 中 左 右 class Solution: def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: res = [] def dfs(node): #确

Day20 - 二叉树理论基础篇

1.二叉树的种类 题目类型主要分为满二叉树和完全二叉树 1.1 满二叉树 满二叉树:如果一棵二叉树只有度为0(没有子节点的结点,也称为叶子结点)的结点和度为2 (左子节点和右子节点)的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。

Day19 - 239. 滑动窗口最大值


题目链接:https://leetcode.cn/problems/sliding-window-maximum/description/ 1.问题理解 场景有一个数组 nums 和一个窗口大小 k,窗口从数组左边滑到右边,每次滑动一格。你需要记录每次窗口停下时,窗口内的最大值。 示例:nums =

Day19 - 150. 逆波兰表达式求值


题目链接:https://leetcode.cn/problems/evaluate-reverse-polish-notation/description/ 1.问题理解 逆波兰表达式是一种后缀表达式,特点就是将运算符置于操作数之后,从而无需括号就能明确运算顺序,例如: 中缀表达式(2+1)*3

Day18 - 1047.删除字符串中的所有相邻重复项


问题理解 我们需要删除字符串中所有相邻且相同的字符对,并重复这个过程直到无法继续删除。例如: 输入 "abbaca": 删除 "bb" → "aaca" 删除 "aa" → "ca"(最终结果) 解法思路 使用栈来模拟这个过程: 遍历字符串中的每个字符 如果栈不为空且栈顶元素等于当前字符,弹出栈顶元