首页 > 编程语言 >代码随想录算法训练营第第23天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

代码随想录算法训练营第第23天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

时间:2024-05-30 22:11:13浏览次数:14  
标签:node return nums 随想录 二叉 搜索 root

  1. 修剪二叉搜索树

这道题目比较难,比 添加增加和删除节点难的多,建议先看视频理解。
题目链接/文章讲解: https://programmercarl.com/0669.修剪二叉搜索树.html
视频讲解: https://www.bilibili.com/video/BV17P41177ud

/**
 * @param {TreeNode} root
 * @param {number} low
 * @param {number} high
 * @return {TreeNode}
 */
var trimBST = function(root, low, high) {
    if (root === null) return root;
    if (root.val < low) {
        return trimBST(root.right, low, high)
    }
    if (root.val > high) {
        return trimBST(root.left, low, high)
    }
    root.left = trimBST(root.left, low, high);
    root.right = trimBST(root.right, low, high);
    return root;
};

108.将有序数组转换为二叉搜索树

本题就简单一些,可以尝试先自己做做。
https://programmercarl.com/0108.将有序数组转换为二叉搜索树.html
视频讲解:https://www.bilibili.com/video/BV1uR4y1X7qL

/**
 * @param {number[]} nums
 * @return {TreeNode}
 */
var sortedArrayToBST = function(nums) {
    if (nums.length === 0) return null;
    let mid = Math.floor(nums.length/2);
    const node = new TreeNode(nums[mid]);
    if (nums.length === 1) {
        return node;
    }
    node.left = sortedArrayToBST(nums.slice(0,mid));
    node.right = sortedArrayToBST(nums.slice(mid+1));
    return node;
};

538.把二叉搜索树转换为累加树

本题也不难,在 求二叉搜索树的最小绝对差 和 众数 那两道题目 都讲过了 双指针法,思路是一样的。
https://programmercarl.com/0538.把二叉搜索树转换为累加树.html
视频讲解:https://www.bilibili.com/video/BV1d44y1f7wP

/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var convertBST = function(root) {
    let total = 0;
    const traverse = (node)=>{
        if (node===null) {
            return;
        }
        traverse(node.right);
        total += node.val;
        node.val = total;
        
        traverse(node.left);
    }
    traverse(root);
    return root;
};

标签:node,return,nums,随想录,二叉,搜索,root
From: https://www.cnblogs.com/yuanyf6/p/18223343

相关文章

  • 代码随想录算法训练营第四十四天|01 背包、动态规划:01背包理论基础(滚动数组)、416. 分
    01背包文档讲解:代码随想录题目链接:46.携带研究材料(第六期模拟笔试)有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 暴力解法:每个物品都有放与不放两种状态......
  • 代码随想录算法训练营Day55 | 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总
    本文目录583.两个字符串的删除操作做题看文章72.编辑距离做题看文章编辑距离总结篇以往忽略的知识点小结个人体会583.两个字符串的删除操作代码随想录:583.两个字符串的删除操作Leetcode:583.两个字符串的删除操作做题找出最长公共子序列,然后用两个字符串的......
  • 完全二叉树查找
    描述有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。输入描述输入有多组数据,遇到0时终止输入。每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。输出描述输出该树中第d层得所有节点,节点间用空格隔开,最后......
  • 阿里云日志搜索
    阿里云日志搜索(SLS日志搜索)查找多个关键词,使用and逻辑:content:"关键词1"andcontent:"关键词2"使用or逻辑:content:"关键词1"orcontent:"关键词2"模糊查询:在关键词后面使用星号,可以模糊查询。如果关键词后面带有一些中文符号,也可以用星号代替。"关键词*"......
  • 二叉树的创建与遍历(附有C++实现详细代码)
    一、引言在计算机科学中,二叉树是一种常见的数据结构,它的每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树的应用广泛,包括但不限于搜索算法、排序算法、存储结构等。本文将详细讨论二叉树的创建与遍历方法,并通过代码示例进行说明。二、二叉树的基本概念在介......
  • SEO初学指南之关键词研究(2) - 搜索意图分析
    Hi,我是听风。这篇文章我们深入探讨下关键词研究中最重要的一点:搜索意图。虽然这在本系列教程的第一篇中提到过搜索意图,但是我还是想再写一篇文章来帮助你们了解什么是搜索意图以及如何再关键词研究中使用它。因为如果你无法匹配搜索意图,那么你可能不会对目标关键词进行排名。开......
  • 5.二叉树详解(附习题)
    1.二叉树链式结构的实现1.1 前置说明在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。本文准备讲述一些二叉树的基础知识,此处手动快速创建一棵简单的二叉树,来快速进入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研究二叉树真正......
  • 代码随想录算法训练营第第22天 | 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中
    二叉搜索树的最近公共祖先相对于二叉树的最近公共祖先本题就简单一些了,因为可以利用二叉搜索树的特性。题目链接/文章讲解:https://programmercarl.com/0235.二叉搜索树的最近公共祖先.html视频讲解:https://www.bilibili.com/video/BV1Zt4y1F7ww/***@param{TreeNode}......
  • PTA——数和二叉树
    7-10建立与遍历二叉树以字符串的形式定义一棵二叉树的先序序列,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。读入相应先序序列,建立二叉链式存储结构的二叉树,然后中序遍历该二叉树并输出结点数据。输入格式:字符串形式的先序序列(即结点的数据类型为单......
  • 动态规划在图搜索中的应用:Floyd算法详解
    多源汇最短路问题-具有多个源点Floyd算法O(n^3)-动态规划给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。数据保证图中不存在负权回路。......