摘要: 组合总和 其实总的思路和前面几类组合问题区别不大 本题由于说明了元素可以重复选取 且无需考虑sum为0的情况 只需要把边界的startIndex迭代从i + 1 变成 i 即可 i表示可以选取元素本身 很容易写出以下未进行剪枝的代码 剪枝情况只是多了一种 也就是sum + 下一个候选元素 > tar 阅读全文
posted @ 2024-01-22 17:09 又见鸣蜩 阅读(6) 评论(0) 推荐(0)
摘要: 组合总和Ⅲ 跟组合总和Ⅰ很像 这里固定了是1-9的范围 而且确定了取k个数字 那么就是确定了树的高度和宽度 注意一下回溯的写法和边界条件就好 还有剪枝操作如下 其实就是当sum已经大于n 就不需要再进行了 电话号码的字母组合 这题就是一般的回溯问题 难点其实是在这投影怎么做 对cpp还是不太熟悉 不 阅读全文
posted @ 2024-01-20 15:50 又见鸣蜩 阅读(15) 评论(0) 推荐(0)
摘要: 组合 熟悉一下回溯算法的基本流程 以下是未曾进行剪枝处理的代码 为什么要进行剪枝呢 因为有一些情况是显然不可能成立的 如下 既然要取4个元素 那么当取了1个元素之后 集合剩余的元素不足4个 不可能满足要求 直接舍去 具体边界思考路径 剪枝代码如下 阅读全文
posted @ 2024-01-19 21:00 又见鸣蜩 阅读(4) 评论(0) 推荐(0)
摘要: 修剪二叉搜索树 这道题不能直接写删除代码 因为要涉及父子关系的保留 如 这样是暴力删掉不符合区间的节点 但是没有保留父子关系 这里我们把不符合区间的节点通过一个临时节点传递出来 然后在外面合适方向接住 具体怎么接住的呢 其实就是对于root来说 左边子树抛出的节点 就会在左边被接上 因为有个root 阅读全文
posted @ 2024-01-18 22:34 又见鸣蜩 阅读(10) 评论(0) 推荐(0)
摘要: 二叉搜索树的最近公共祖先 这题跟之前的不一样 可以利用二叉搜索树有序的特点 有序就说明可以根据节点的值与p q的关系判断应该往左边搜索还是右边搜索 这题显然是不需要遍历整棵树的 所以是写的遍历边的写法 遍历树需要用变量接受 二叉搜索树中的插入操作 一开始还以为要遍历整棵树 其实不需要 因为有序 所以 阅读全文
posted @ 2024-01-17 21:03 又见鸣蜩 阅读(20) 评论(0) 推荐(0)
摘要: 二叉搜索树的最小绝对差 二叉搜索树就是有序数组 那么转换一下就很简单了 也可以直接在遍历二叉搜索树的时候进行比较 需要一个指针记录前一个节点 二叉搜索树中的众数 既可以把这题的二叉搜索树当成一般树来做 这样就是层序遍历树然后用map记录频率 再取频率最高的值 这里用了中序遍历二叉搜索树 这样就是一个 阅读全文
posted @ 2024-01-16 21:49 又见鸣蜩 阅读(11) 评论(0) 推荐(0)
摘要: 最大二叉树 前序遍历 递归 效率不高 因为每次都要新开数组给左右子树 可以在同一个数组上做这个事情 合并二叉树 一开始不知道怎么同时遍历两棵树 其实只要同时传入两棵树的节点就可以了 这里判断两棵树谁空就另外一个作为构造树 全为空那就会构造空节点 二叉搜索树中的搜索 熟悉一下二叉搜索树的搜索流程 注意 阅读全文
posted @ 2024-01-15 20:48 又见鸣蜩 阅读(8) 评论(0) 推荐(0)
摘要: 找树左下角的值 最简单就是想到层序遍历之后取第一个位置元素就是了 递归的话需要先判断哪里最深的节点 至于最左 保持中左右的遍历顺序 第一次得到最大深度处就是最左的 路径总和 有点像查找子树路径 所以递归回溯是比较好的选择 在求路径的适合,targetSum - node->val 是否为0的判断比一 阅读全文
posted @ 2024-01-13 21:44 又见鸣蜩 阅读(9) 评论(0) 推荐(0)
摘要: 平衡二叉树 之前一直写迭代代码 没有怎么写递归 正好这题不是很好写迭代 练习一下递归 这题递归逻辑相对简单 左右子树高度差判断是不是大于一 可以直接返回结果 不大于一就高度max(l,r)+1 二叉树的所有路径 关键要点 这题适合先序遍历 回溯过程和递归过程是一起写的 进来几次就回溯几次 这样才能回 阅读全文
posted @ 2024-01-12 23:17 又见鸣蜩 阅读(8) 评论(0) 推荐(0)
摘要: N 叉树的最大深度 这题昨天做过二叉版本 n叉区别不大 完全二叉树的节点个数 层级遍历 入que的数量就是节点个数 阅读全文
posted @ 2024-01-11 21:51 又见鸣蜩 阅读(10) 评论(0) 推荐(0)