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

Leetcode—1038.从二叉搜索树到更大和树【中等】

2023每日刷题(四十九)

Leetcode—1038.从二叉搜索树到更大和树

在这里插入图片描述

算法思想

二叉搜索树的中序遍历(左根右)结果是一个单调递增的有序序列,我们反序进行中序遍历(右根左),即可以得到一个单调递减的有序序列。通过累加单调递减的有序序列,我们可以得到大于等于 node.val 的新值,并重新赋值给 node。

按照“右根左”的顺序,递归遍历二叉搜索树,累加遍历到的所有节点值到 s 中,然后每次赋值给对应的 node 节点。

实现代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int s = 0;

    void dfs(struct TreeNode* root) {
        if(root == nullptr) {
            return;
        }
        dfs(root->right);
        s += root->val;
        root->val = s;
        dfs(root->left);
    }
    TreeNode* bstToGst(TreeNode* root) {
        dfs(root);
        return root;
    }
};

运行结果

在这里插入图片描述
别问我为什么不给C语言实现代码,因为力扣编译器有问题

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int s = 0;

void dfs(struct TreeNode* root) {
    if(root == NULL) {
        return;
    }
    dfs(root->right);
    s += root->val;
    root->val = s;
    dfs(root->left);
}

struct TreeNode* bstToGst(struct TreeNode* root) {
    dfs(root);
    return root;
}

在这里插入图片描述
在这里插入图片描述
?????37是哪来的???
在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!


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

相关文章:

  • OLED 显示画面的变换操作——上下、左右翻转
  • 大数据技术在金融风控中的应用
  • Python酷库之旅-第三方库Pandas(206)
  • 数据库管理-第260期 业务向前,数据库向后(20241111)
  • LabVIEW编程基础教学(一)--介绍
  • 人工智能(AI)和机器学习(ML)技术学习流程
  • MySQL 数据库如何实现 XA 规范?
  • 【重磅来袭!!!工程师必备初始化建工程软件】
  • Java常见算法和lambda
  • 一个小问题
  • 人工智能企业引入S-SDLC,推动安全能力大跃升,保障AI技术体系深化落地
  • 每日OJ题_算法_双指针③_力扣202. 快乐数
  • 基于YOLOv8深度学习的火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
  • almaLinux centos8 下载ffmpeg离线安装包、离线安装
  • XUbuntu22.04之OBS30.0设置录制音频降噪(一百九十六)
  • Ubuntu systemd-analyze命令(系统启动性能分析工具:分析系统启动时间,找出可能导致启动缓慢的原因)
  • [vue3] 使用 vite 创建vue3项目的详细流程
  • 【pytorch】深度学习入门一:pytorch的安装与配置(Windows版)
  • 适合炎热天气的最佳葡萄酒有哪些?
  • 北京市经信局局长姜广智带队调研三六零 强调大模型应与行业结合
  • 修改el-table表头样式
  • 电脑搜不自己的手机热点,其余热点均可!
  • doris查询报错err: Error 1105: errCode = 2, detailMessage = query timeout
  • 通信线缆是什么
  • 论ChatGPT让程序员提升效率—掌握时代工具风口修炼之道【文末送书-02】
  • java常用字符串工具方法封装