今天刷题了吗
文章平均质量分 59
每天打卡Leetcode
韩豆豆小姐
今晚我不关心人类
展开
-
Leetcode刷题——链表
CS必刷系列——链表原创 2023-01-06 22:25:25 · 127 阅读 · 0 评论 -
Leetcode刷题——数组
CS人笔刷系列——数组原创 2022-12-21 16:56:21 · 144 阅读 · 0 评论 -
Leetcode 216. 组合总和 III
链接:https://leetcode-cn.com/problems/combination-sum-iii找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。思路:直接套用模板,跟那个全排列有点像,还有其实就是个N叉树的前序遍历,细品。害,我这个机器人。class Solution {public:vector<vector<int> > res;原创 2020-11-10 22:09:52 · 105 阅读 · 0 评论 -
Leetcode1038. 把二叉搜索树转换为累加树
链接:https://leetcode-cn.com/problems/binary-search-tree-to-greater-sum-tree/给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。思路:二叉树原创 2020-11-05 15:54:24 · 140 阅读 · 0 评论 -
Leetcode230. 二叉搜索树中第K小的元素
链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。思路:这道题有点水,二叉搜索树中序遍历的结果是升序排列,求第K小元素,就是中序遍历路径的第k-1个元素/** * Definition for a binary tree node. * struct Tr原创 2020-11-03 21:05:07 · 57 阅读 · 0 评论 -
Leetcode701. 二叉搜索树中的插入操作
链接:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。思路:利用二叉搜索树的性质;递归/** * Definition for a binary t原创 2020-11-02 21:40:06 · 134 阅读 · 0 评论 -
Leetcode654. 最大二叉树
链接:https://leetcode-cn.com/problems/maximum-binary-tree给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。/** * Definition for a binary tree node. * struct TreeNode { *原创 2020-11-01 21:38:20 · 130 阅读 · 0 评论 -
Leetcode508. 出现次数最多的子树元素和
链接:https://leetcode-cn.com/problems/most-frequent-subtree-sum给你一个二叉树的根结点,请你找出出现次数最多的子树元素和。一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。你需要返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。/** * Definition for a binary tree node. * struct TreeNode {原创 2020-10-31 21:59:04 · 974 阅读 · 0 评论 -
Leetcode897. 递增顺序查找树
题目链接:https://leetcode-cn.com/problems/increasing-order-search-tree/给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。思路:将中序遍历的结果存储下来,再按照要求建立右单分支结点,创建的时候要用new/** * Definition for a binary tree node. * struct TreeNode { * int val; *原创 2020-10-31 21:30:38 · 74 阅读 · 0 评论 -
Leetcode965. 单值二叉树
链接:https://leetcode-cn.com/problems/univalued-binary-tree/如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。思路:利用set进行去重,如果set中大小大于1,说明一定不是单值/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *原创 2020-10-28 20:23:58 · 65 阅读 · 0 评论 -
Leetcode671. 二叉树中第二小的节点
链接:https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,root.val = min(root.left.val, root.right.val) 总成立。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -原创 2020-10-27 21:43:17 · 108 阅读 · 0 评论 -
653. 两数之和 IV - 输入 BST
链接:https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。思路:俺不会什么奇技淫书,只会硬搞/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode原创 2020-10-25 21:43:55 · 74 阅读 · 0 评论 -
二叉树的层序遍历习题集锦
想说点东西给我自己啊,鬼知道我这一周到底干了啥;干啥啥不行,吃饭第一名,冬天快要来了,有羽绒服不需要脂肪来御寒,请有点自知之明,微笑脸。要把前几天没做的给补回来这次就来个二叉树的二层次遍历叭,从二叉树的层次遍历可以延伸出好多题目层次遍历集锦1.102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7]/** * Definition for a binary tree原创 2020-10-22 21:04:53 · 1731 阅读 · 0 评论 -
Leetcode 617. 合并二叉树
题目链接https://leetcode-cn.com/problems/merge-two-binary-trees给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。/** * Definition for a binary tree node. * struct TreeNode { * in原创 2020-10-18 11:19:37 · 61 阅读 · 0 评论 -
leetcode 606. 根据二叉树创建字符串
题目链接https://leetcode-cn.com/problems/construct-string-from-binary-tree你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。思路:相当于前序遍历的升级,搞得花里胡哨的/** * Definition for a binary tree node. * struct TreeNode { *原创 2020-10-18 10:47:42 · 126 阅读 · 0 评论 -
Leetcode 108. 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。思路:利用二叉搜索树的性质,中序遍历是一个升序序列,按照常理,仅仅知道中序遍历是无法得到二叉树的,题目中要求二叉树的高度之差不能超过一,选择根节点的时候考虑使用中间结点/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo原创 2020-10-17 09:51:14 · 124 阅读 · 0 评论 -
Leetcode N叉树的前、后序遍历
给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :思路:类比二叉树的前序遍历模板,push操作放在之前做,递归孩子结点操作放在后面/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _va原创 2020-10-17 09:15:45 · 53 阅读 · 0 评论 -
Leetcode 572. 另一个树的子树
题目链接:https://leetcode-cn.com/problems/subtree-of-another-tr给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。思路:这道题是leetcode100题 相同数树的扩展,在这道题 t可能是s中的某一节点;也就是如果t树的根节点如果是s中的某一节点,接下来要做的就是 判断当前s树指向的 与t根节点值相等的结点 为根的子树 是否原创 2020-10-16 18:58:47 · 81 阅读 · 0 评论 -
Leetcode 559. N叉树的最大深度
给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。思路与一:在求二叉树深度的模板上进行修改/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vecto原创 2020-10-15 10:32:08 · 80 阅读 · 0 评论 -
Leetcode 530. 二叉搜索树的最小绝对差
本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。思路:利用二叉搜索树的特性,中序遍历的结果是升序序列的数组,那么题目就转变成在升序序列中找绝对值最小,每次比较当前节点与前一节点差值的绝对值与目前ans中保存的最小值的大小,将较小的保存在ans中/** * Definition for a binary tre原创 2020-10-14 09:33:09 · 94 阅读 · 0 评论 -
Leetcode 501. 二叉搜索树中的众数
题目链接地址https://leetcode-cn.com/problems/find-mode-in-binary-search-tree给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2],思路:利用前序遍历(unordered_map)统计每个元素出现的频度,然后原创 2020-10-13 09:35:31 · 51 阅读 · 0 评论 -
Leetcode 404. 左叶子之和
计算给定二叉树的所有左叶子之和。https://leetcode-cn.com/problems/sum-of-left-leaves/思路:好像了然于胸,掌握住那个套路了,不过这才是简单题。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(原创 2020-10-12 15:21:36 · 41 阅读 · 0 评论 -
LeetCode 257. 二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。思路:我用的是简单的回溯思想,回溯模板一定要熟透;这个题就是想让其求根节点到叶子结点的路径,与昨天求 根节点到某一节点的路径 相似;同时这个题还需要整型到string类型的转换,题目结果是string,带“->”/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *l原创 2020-10-11 18:25:01 · 48 阅读 · 0 评论 -
LeetCode 最近公共祖先
题目链接https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]思路:原创 2020-10-10 10:12:33 · 109 阅读 · 0 评论 -
Leetcode 226. 翻转二叉树
PS:一下子通过,让我有点不值所措,哈哈哈,菜鸡久了,就会对自己产生怀疑和不自信。挺起胸脯,要自信./** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class So.原创 2020-10-09 09:01:52 · 59 阅读 · 0 评论 -
LeetCode 111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。分析:乍一看,我以为是和求二叉树的高度那种思想一样,返回的结果是二叉树左右子树最小高度+1,可是 忽略了左右子树可能有一方为空的情况,就是二叉树呈现单支的情况/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *原创 2020-10-08 09:41:52 · 151 阅读 · 0 评论 -
LeetCode 110.平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL)原创 2020-10-07 09:24:27 · 119 阅读 · 0 评论