
leetcode刷题
leetcode刷题
就是木子呀
这个作者很懒,什么都没留下…
展开
-
leetcode235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]原创 2023-08-29 17:19:51 · 114 阅读 · 0 评论 -
leetcode236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。原创 2023-08-29 16:55:46 · 90 阅读 · 0 评论 -
leetcode501. 二叉搜索树中的众数
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。假定 BST 满足如下定义:结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于 当前节点的值左子树和右子树都是二叉搜索树。原创 2023-08-29 11:32:39 · 91 阅读 · 0 评论 -
leetcode530. 二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。原创 2023-08-28 13:57:59 · 72 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。原创 2023-08-28 13:20:54 · 73 阅读 · 0 评论 -
leetcode700. 二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。原创 2023-08-28 10:32:46 · 77 阅读 · 0 评论 -
leetcode617. 合并二叉树
给你两棵二叉树: root1 和 root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。原创 2023-08-27 23:35:34 · 58 阅读 · 0 评论 -
leetcode654. 最大二叉树
给定一个不重复的整数数组 nums。最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的 最大二叉树。输入:nums = [3,2,1,6,0,5]输出:[6,3,5,null,2,0,null,null,1]原创 2023-08-27 23:04:13 · 72 阅读 · 0 评论 -
leetcode105. 从前序与中序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。原创 2023-08-27 20:05:12 · 56 阅读 · 0 评论 -
leetcode106. 从中序与后序遍历序列构造二叉树
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。原创 2023-08-27 19:20:39 · 49 阅读 · 0 评论 -
题目:leetcode112. 路径总和(递归法解决)
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。如果存在,返回 true;否则,返回 false。叶子节点 是指没有子节点的节点。原创 2023-08-26 21:39:20 · 61 阅读 · 0 评论 -
leetcode513. 找树左下角的值(层次遍历实现)
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。原创 2023-08-26 13:33:01 · 79 阅读 · 0 评论 -
leetcode404. 左叶子之和
给定二叉树的根节点 root ,返回所有左叶子之和。原创 2023-08-26 13:20:21 · 77 阅读 · 0 评论 -
leetcode257. 二叉树的所有路径
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。原创 2023-08-26 13:01:54 · 51 阅读 · 0 评论 -
leetcode110. 平衡二叉树(递归法)
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树的左右两个子树的高度差的绝对值不超过 1。原创 2023-08-26 10:33:54 · 60 阅读 · 0 评论 -
leetcode222. 完全二叉树的节点个数(递归法三行代码!层次遍历更节省空间!)
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。原创 2023-08-26 09:52:48 · 83 阅读 · 0 评论 -
leetcode101. 对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。原创 2023-08-25 17:48:55 · 50 阅读 · 0 评论 -
leetcode226. 翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。原创 2023-08-25 17:14:18 · 46 阅读 · 0 评论 -
leetcode111. 二叉树的最小深度(层次遍历)
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。原创 2023-08-25 15:25:32 · 67 阅读 · 0 评论 -
leetcode104. 二叉树的最大深度(递归和层次遍历两种方法解决)
给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。原创 2023-08-25 14:57:18 · 110 阅读 · 0 评论 -
eetcode117. 填充每个节点的下一个右侧节点指针 II
给定一个二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。原创 2023-08-25 14:04:01 · 54 阅读 · 0 评论 -
leetcode116. 填充每个节点的下一个右侧节点指针
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。原创 2023-08-25 13:50:32 · 65 阅读 · 0 评论 -
leetcode515. 在每个树行中找最大值
给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。原创 2023-08-23 17:04:12 · 59 阅读 · 0 评论 -
leetcode429. N 叉树的层序遍历
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。原创 2023-08-23 16:38:12 · 77 阅读 · 0 评论 -
leetcode637. 二叉树的层平均值
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。原创 2023-08-23 16:08:26 · 50 阅读 · 0 评论 -
leetcode199. 二叉树的右视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。原创 2023-08-23 15:45:15 · 71 阅读 · 0 评论 -
leetcode107. 二叉树的层序遍历 II
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)原创 2023-08-23 15:01:20 · 39 阅读 · 0 评论 -
leetcode102. 二叉树的层序遍历(队列实现)
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。原创 2023-08-23 11:31:03 · 75 阅读 · 0 评论 -
leetcode145. 二叉树的后序遍历(迭代法实现)
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历。原创 2023-08-23 10:46:48 · 45 阅读 · 0 评论 -
leetcode94. 二叉树的中序遍历(迭代法实现)
给定一个二叉树的根节点 root ,返回 它的 中序 遍历。原创 2023-08-23 10:32:34 · 68 阅读 · 0 评论 -
leetcode144. 二叉树的前序遍历(迭代算法实现)
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。原创 2023-08-23 10:09:44 · 80 阅读 · 0 评论 -
leetcode145. 二叉树的后序遍历(递归实现)
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历。原创 2023-08-23 09:19:31 · 45 阅读 · 0 评论 -
leetcode94. 二叉树的中序遍历(递归实现)
思路:使用递归算法,首先中序遍历左子树,然后输出当前结点的值,然后再遍历右子树。给定一个二叉树的根节点 root ,返回 它的 中序 遍历。题目:leetcode94. 二叉树的中序遍历(递归实现)原创 2023-08-23 09:11:28 · 61 阅读 · 0 评论 -
leetcode144. 二叉树的前序遍历(递归完成)
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。题目:leetcode144. 二叉树的前序遍历。原创 2023-08-23 09:02:30 · 35 阅读 · 0 评论 -
leetcode347. 前 K 个高频元素(小顶堆实现)
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。题目:leetcode347. 前 K 个高频元素(小顶堆实现)输入: nums = [1,1,1,2,2,3], k = 2。输入: nums = [1], k = 1。思路:使用小顶堆实现。原创 2023-08-17 23:25:48 · 50 阅读 · 0 评论 -
leetcode239. 滑动窗口最大值(队列实现)
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。题目:leetcode239. 滑动窗口最大值(队列实现)滑动窗口的位置 最大值。输入:nums = [1], k = 1。输出:[3,3,5,5,6,7]返回 滑动窗口中的最大值。原创 2023-08-17 22:36:52 · 59 阅读 · 0 评论 -
leetcode150. 逆波兰表达式求值(使用栈解决)
tokens[i] 是一个算符(“+”、“-”、“*” 或 “/”),或是在范围 [-200, 200] 内的一个整数。输入:tokens = [“10”,“6”,“9”,“3”,“+”,“-11”,“解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。输入:tokens = [“4”,“13”,“5”,“/”,“+”]输入:tokens = [“2”,“1”,“+”,“3”,“*”]原创 2023-08-17 18:33:37 · 245 阅读 · 0 评论 -
leetcode1047. 删除字符串中的所有相邻重复项(其实就是开心消消乐)
遍历字符串s,如果栈内有元素,则取出栈顶元素跟要放进去的元素进行比较,如果一致则弹出栈顶元素,如果不一致则将当前元素放入栈顶。最后不要忘了将栈内元素转为字符串返回,值得一提的是,每次拼接字符必须拼接在当前字符串的前面,否则最后拼接到的字符串是倒序的。例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。输入:“abbaca”原创 2023-08-17 16:40:14 · 248 阅读 · 0 评论 -
leetcode20. 有效的括号(使用双向队列模拟栈解决这个问题)
因为栈有先进后出的特点,我们遍历这个字符串,每个字符我们都先识别一下是否是’)‘]’'}'这三个中的一个,如果不是则直接加入栈中,如果是则去查看栈中的栈顶元素是否是对应的符号。我们还需要使用一个map来保存左括号和右括号的对应关系,键存放右括号,值存放左括号。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。注意:s 仅由括号 ‘()[]{}’ 组成。输入:s = “()[]{}”输入:s = “()”原创 2023-08-17 14:26:21 · 71 阅读 · 0 评论 -
leetcode225. 用队列实现栈(使用一个队列)
仅仅使用一个队列来实现栈,思路是在push元素进来之后,将原来的所有数据全都pop出去,再push到队列尾部,其他一切操作跟队列的操作一致,这样就保证了先进后出。你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。题目:leetcode225. 用队列实现栈(使用一个队列)int pop() 移除并返回栈顶元素。原创 2023-08-16 21:52:58 · 73 阅读 · 0 评论