当前位置: 首页 > article >正文

力扣labuladong——一刷day36

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣230. 二叉搜索树中第K小的元素
  • 二、力扣538. 把二叉搜索树转换为累加树
  • 三、力扣1038. 从二叉搜索树到更大和树


前言


首先,BST 的特性大家应该都很熟悉了: 1、对于 BST 的每一个节点 node,左子树节点的值都比 node 的值要小,右子树节点的值都比 node 的值大。 2、对于 BST 的每一个节点 node,它的左侧子树和右侧子树都是 BST。

一、力扣230. 二叉搜索树中第K小的元素

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    List<Integer> list = new ArrayList<>();
    public int kthSmallest(TreeNode root, int k) {
        fun(root);
        return list.get(k-1);
    }
    public void fun(TreeNode root){
        if(root == null){
            return ;
        }
        fun(root.left);
        list.add(root.val);
        fun(root.right);
    }
}

不使用额外空间

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int res = 0,count = 0;
    public int kthSmallest(TreeNode root, int k) {
        fun(root,k);
        return res;
    }
    public void fun(TreeNode root,int k){
        if(root == null){
            return ;
        }
        fun(root.left,k);
        count ++;
        if(count == k){
            res = root.val;
            return ;
        }
        fun(root.right,k);
    }
}

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

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int count = 0;
    public TreeNode convertBST(TreeNode root) {
        fun(root);
        return root;
    }
    public void fun(TreeNode root){
        if(root == null){
            return ;
        }
        fun(root.right);
        count += root.val;
        root.val = count;
        fun(root.left);
    }
}

三、力扣1038. 从二叉搜索树到更大和树

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int count = 0;
    public TreeNode bstToGst(TreeNode root) {
        fun(root);
        return root;
    }
    public void fun(TreeNode root){
        if(root == null){
            return;
        }
        fun(root.right);
        count += root.val;
        root.val = count;
        fun(root.left);
    }
}

http://www.kler.cn/a/131728.html

相关文章:

  • Python----图像的手绘效果
  • pycharm pro v2023.2.4(Python编辑开发)
  • Ubuntu22.04 Apache2安装SSL证书 https
  • 033-从零搭建微服务-日志插件(一)
  • 主键问题以及分布式 id
  • centos三台主机配置互信ssh登录
  • 各机构如何加强网络渗透、“渗透”防御
  • 目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(基础篇)(三)
  • gorm的简单操作
  • 一文看分布式锁
  • CTFhub-RCE-过滤空格
  • 12-1- GAN -简单网络-线性网络
  • 4核8G服务器价格选择轻量还是CVM合适?
  • 使用docker部署ELK日志框架-Elasticsearch
  • JDK,JRE,JVM之间的区别和联系
  • 2023.11.17 -hivesql调优,数据压缩,数据存储
  • 腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例
  • mysqldump常用操作示例/命令
  • Go fsnotify简介
  • 【EI会议征稿】第七届大数据与应用统计国际学术研讨会(ISBDAS 2024)