首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
669专题
小山菌_代码随想录算法训练营第二十三天| 669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树 、538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树 文档讲解:代码随想录.修剪二叉搜索树 视频讲解:你修剪的方式不对,我来给你纠正一下!| LeetCode:669. 修剪二叉搜索树 状态:已完成 代码实现 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* Tre
阅读更多...
Follow Carl To Grow|【LeetCode】669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树
【LeetCode】669. 修剪二叉搜索树 题意:给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。 所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能
阅读更多...
UVA - 669 Defragment
题意:简单说就是将第i个簇号放回i,求最少的步数 思路:只处理链形,和环形的情况,其他的可以不管,对于链形来说,只要倒置就行了,环形的找一个空闲的放一个,然后就是链形的情况了 #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <stack>using namespa
阅读更多...
代码随想录算法训练营 day23| ● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树
文章目录 前言669. 修剪二叉搜索树思路方法一 递归法方法二 迭代法 108.将有序数组转换为二叉搜索树思路方法一 递归法方法二 迭代法 538.把二叉搜索树转换为累加树思路方法一方法二 总结 前言 迭代法都没看主要是669和538【538很简单】 669. 修剪二叉搜索树 思路 不用看教程,思路很清晰 💖总体思路【单层递归逻辑】 如果当前节点的值小于low
阅读更多...
代码随想录算法训练营第22天(py)| 二叉树 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树 力扣链接 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 思路 如果当前节点元素小于low,递归右子树,返回符合条件的头节点 如果当前节点元素大于high,递归左子树,返回复合条件的头节点 最后root.left接入符合条件的左孩子,root.right接入符合条件的右孩子 class S
阅读更多...
Day25:Leetcode:669. 修剪二叉搜索树 + 108.将有序数组转换为二叉搜索树 + 538.把二叉搜索树转换为累加树
LeetCode:669. 修剪二叉搜索树 问题描述 解决方案: 1.思路 2.代码实现 class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root == null) {return null;}if (root.val < low) {return trimBST(root.ri
阅读更多...
代码随想录算法训练营day25 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树 看题解做出来的 class Solution:def trimBST(self, root: Optional[TreeNode], low: int, high: int) -> Optional[TreeNode]:if not root:return Noneif root.val < low:return self.trimBST(root.right, lo
阅读更多...
算法训练营第二十五天 | LeetCode 669 修剪二叉树、
LeetCode 669 修剪二叉树 这题用层序遍历+双指针删除不符合条件的节点即可。具体是要用到一个虚拟根节点,双指针中prev指针每次指向队列顶元素,cur指针先指向prev左子节点,用循环去除这个位置上不符合条件的节点并连上继承节点,内部就是一个删除节点的操作。后指向prev右子节点,重复上述操作。此时若prev左子节点和右子节点仍不为空,则将它们入队列继续执行上述过程即可。 后面遇到一
阅读更多...
代码随想录算法训练营第二十三天||669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538把二叉搜索树转换为累加树
文章目录 一、669. 修剪二叉搜索树 思路 二、108.将有序数组转换为二叉搜索树 思路 三、538.把二叉搜索树转换为累加树 思路 一、669. 修剪二叉搜索树 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。
阅读更多...
代码随想录算法训练营DAY23|C++二叉树Part.9|669.修建二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
文章目录 669.修建二叉搜索树递归法思路伪代码CPP代码 108.将有序数组转换为二叉搜索树递归伪代码CPP代码 538.把二叉搜索树转换为累加树思路递归伪代码递归CPP代码迭代法 669.修建二叉搜索树 力扣题目链接 文章讲解:669.修建二叉搜索树 视频讲解:你修剪的方式不对,我来给你纠正一下!| LeetCode:669. 修剪二叉搜索树 状态:这个最关键的点在于,删
阅读更多...
Day 23 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇
修剪二叉搜索树 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 最直接的想法,遍历树然后找到root->val在[L,R]以外的节点删除,通过递归处理返回根节点; 如果此时简单的给出这种代码: root->l
阅读更多...
代码随想录算法训练营第二十三天| 669.修建二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
系列文章目录 目录 系列文章目录669. 修剪二叉搜索树①递归法②迭代法(不好想出,掌握递归即可) 108.将有序数组转换为二叉搜索树递归法[左闭右开)[左闭右闭] 538.把二叉搜索树转换为累加树①递归法-反中序遍历(右中左)+双指针②迭代法-反中序遍历(右中左)+双指针统一迭代法普通迭代法 669. 修剪二叉搜索树 ①递归法 注:不能在遇到 root.val
阅读更多...
【Python】【难度:简单】Leetcode 669. 修剪二叉搜索树
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 示例 1: 输入: 1 / \ 0 2 L = 1 R = 2 输出: 1 \ 2 示例 2: 输入: 3
阅读更多...
代码随想录 Day23 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇
669. 修剪二叉搜索树 class Solution {public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root == nullptr ) return nullptr;if (root->val < low) {TreeNode* right = trimBST(root->right, low, hig
阅读更多...
【力扣一刷】代码随想录day23(669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、二叉树总结)
目录 【669. 修剪二叉搜索树】中等题(偏简单) 方法一 递归 方法二 迭代法(有点抽象,不建议) 【108.将有序数组转换为二叉搜索树】简单题 方法 递归 【538.把二叉搜索树转换为累加树】中等题 方法一 递归 - 中序遍历的倒序 方法二 统一迭代法 - 中序遍历的倒序 二叉树总结 【669. 修剪二叉搜索树】中等题(偏简单) 方法一 递归 思路
阅读更多...
代码随想录第23天| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树 669. 修剪二叉搜索树 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 你修剪的方式不对,我来给你纠正一下!| LeetCode:669. 修剪二叉搜索树_哔哩哔哩_bilibili 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]
阅读更多...
二叉树|669.修剪二叉搜索树
力扣题目链接 class Solution {public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root == nullptr ) return nullptr;if (root->val < low) {TreeNode* right = trimBST(root->right, low, high); // 寻
阅读更多...
Day23|二叉树part09:669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、总结篇
669. 修剪二叉搜索树 一刷完全没有思路,现在有点思路了,但是还是独立写不出来。 class Solution {public TreeNode delete(TreeNode node, int low, int high){if(node == null){return null;}if(node.val < low){return delete(node.right, low, hig
阅读更多...
力扣669 修剪二叉搜索树 Java版本
文章目录 题目描述代码 题目描述 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。 所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点
阅读更多...
代码随想录|Day20|二叉树09|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树 思路:利用二叉搜索树的性质,对于每个节点,判断其是否在区间内: 如果节点值 < low,则此节点和其左子树都不在范围内如果节点值 > high,则此节点和其右子树都不在范围内如果 low < 节点值 < high,则保留此节点,但需要递归修建其左右子树 class Solution:def trimBST(self, root: Optional[TreeNod
阅读更多...
二刷代码随想录算法训练营第二十三天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
目录 一、669. 修剪二叉搜索树 二、108. 将有序数组转换为二叉搜索树 三、538. 把二叉搜索树转换为累加树 一、669. 修剪二叉搜索树 题目链接:力扣 文章讲解:代码随想录 视频讲解: 你修剪的方式不对,我来给你纠正一下!| LeetCode:669. 修剪二叉搜索树 题目: 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修
阅读更多...
代码随想录算法训练营第23天 | 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树
669. 修剪二叉搜索树 题目链接 669. 修剪二叉搜索树 - 力扣(LeetCode) 思路 跟删除节点的方式是差不多的。 class Solution {public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root == nullptr) return nullptr;if (root->val < l
阅读更多...
代码随想录算法训练营第23天|669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、总结篇
目录 一、力扣669.修剪二叉搜索树1.1 题目1.2 思路1.3 代码 二、力扣108.将有序数组转换为二叉搜索树2.1 题目2.2 思路2.3 代码2.4 总结 三、力扣538.把二叉搜索树转换为累加树3.1 题目3.2 思路3.3 代码3.4 总结 一、力扣669.修剪二叉搜索树 1.1 题目 1.2 思路 本题递归代码分三个模块来写: (1)递归终止条件:nul
阅读更多...
随想录刷题笔记 —二叉树篇10 450删除二叉搜索树节点 669修剪二叉搜索树 108有序数组转换为二叉搜索树
450删除二叉搜索树节点 删除结点分为2种情况: 1.结点的孩子只有一个或没有,则直接用孩子或空替代 2.结点的孩子有两个,用左孩子替代,将左孩子的右孩子移到结点右子树的最左结点 解法一:递归 class Solution {public TreeNode deleteNode(TreeNode root, int key) {if (root==null){return root;}i
阅读更多...
【LeetCode打卡】Day23|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
学习目标: 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 学习内容: 669. 修剪二叉搜索树 题目链接&&文章讲解 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原
阅读更多...
LeetCode 450.删除二叉搜索树中的节点和669.修建二叉搜索树思路对比 及heap-use-after-free问题解决
题目描述 450.删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点;如果找到了,删除它。 示例 1: 输入:root = [5,3,6,2,4,null,7], key =
阅读更多...