Day 23 | 669. 修剪二叉搜索树 、 108.将有序数组转换为二叉搜索树 、538.把二叉搜索树转换为累加树 、总结篇

669. 修剪二叉搜索树

题目
文章讲解
视频讲解

思路:二叉搜索树有序,若当前结点值大于high,递归左子树,小于low,递归右子树。后要将下一层处理完左子树的结果赋给root->left,处理完右子树的结果赋给root->right


class Solution {
   
    public TreeNode trimBST(TreeNode root, int low, int high) {
   
        if (root == null)
            return null;
        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.将有序数组转换为二叉搜索树

题目
文章讲解
视频讲解

思路:

  • 数组的长度用nums.length记录
  • 取中点,分左右(左闭右闭)
  • 注意避免越界

class Solution {
   
    public TreeNode sortedArrayToBST(int[] nums) {
   
        TreeNode root = travelsal(nums, 0, nums.length - 1);
        return root;
    }

    public TreeNode travelsal(int[] nums, int left, int right) {
   
        if (left > right)
            return null;
        int mid = left + (right - left) / 2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = travelsal(nums, left, mid - 1);
        root.right = travelsal(nums, mid + 1, right);
        return root;
    }
}

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

文章讲解
视频讲解

思路:

  • pre的位置,需要设置成全局,否则作用域为局部的话,每次调用都会创建新的pre值为0

class Solution {
   
    int pre = 0;

    public TreeNode convertBST(TreeNode root) {
   
        travelsal(root);
        return root;
    }

    public void travelsal(TreeNode root) {
   
        if (root == null)
            return;
        travelsal(root.right);
        root.val += pre;
        pre = root.val;
        travelsal(root.left);
    }
}

总结篇

文章讲解

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 16:44:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 16:44:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 16:44:02       87 阅读
  4. Python语言-面向对象

    2024-01-18 16:44:02       96 阅读

热门阅读

  1. css实现二级导航下拉菜单

    2024-01-18 16:44:02       54 阅读
  2. slint 1.3.2 官方文档翻译06

    2024-01-18 16:44:02       45 阅读
  3. .Net6 记一次RabbitMq消息订阅/发布优化

    2024-01-18 16:44:02       62 阅读
  4. Elasticsearch 多索引条件过滤:字段匹配

    2024-01-18 16:44:02       55 阅读
  5. 算法--插值法

    2024-01-18 16:44:02       57 阅读
  6. UnityShader UsePass介绍

    2024-01-18 16:44:02       56 阅读
  7. Vue-组件缓存-keep-alive

    2024-01-18 16:44:02       53 阅读