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

力扣538 补9.18

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

可以做,主要还是分类讨论并找规律。

当前结点如果是左节点的话,root.val=root.val+pre.val+dfs(root.right);

如果是右结点的话,

root.val=pre.val-preval-dfs(root.left);

都和前一个结点有关系,如果找不到那个万能公式的话,就分类讨论多分几种情况。

class Solution {

    public TreeNode convertBST(TreeNode root) {

        dfs2(root,null,0,2);

        return root;

    }

    int dfs(TreeNode root){

        //对整个树求和

        if(root==null) return 0;

        return root.val+dfs(root.right)+dfs(root.left);

    }

    void dfs2(TreeNode root,TreeNode pre,int preval,int flag){

        // 左右节点分别考虑

        if(root==null) return;

        int rootval=root.val;

        if(flag==0) root.val=root.val+pre.val+dfs(root.right);

        else if(flag==1) root.val=pre.val-preval-dfs(root.left);

        else root.val+=dfs(root.right);

        dfs2(root.right,root,rootval,1);

        dfs2(root.left,root,rootval,0);

    }

 

}

http://www.lryc.cn/news/171987.html

相关文章:

  • [Linux入门]---Linux编译器gcc/g++使用
  • [Git入门]---gitee注册及代码提交
  • 企业架构LNMP学习笔记46
  • ELFK之zookeeper+kafka
  • ECharts
  • jsoup框架技术文档--java爬虫--架构体系
  • OpenStack创建云主机并连接CRT
  • linux-sed命令
  • Elasticsearch:什么是向量和向量存储数据库,我们为什么关心?
  • JOSEF约瑟 剩余电流继电器PFR-5 PFE-W-20 国产化改造ZLR-G81 ZCT-45
  • 分别用Python和Go实现对文件夹及其子文件夹里的文件进行批量重命名
  • redis深度历险 千帆竞发 —— 分布式锁
  • C#根据中文首字母排序
  • 仪表基础知识培训
  • 无涯教程-JavaScript - PI函数
  • 前端防抖和节流
  • [pai-diffusion]pai的easynlp的clip模型训练
  • 期权如何交易?期权如何做模拟交易?
  • 【新书推荐】大模型赛道如何实现华丽的弯道超车 —— 《分布式统一大数据虚拟文件系统 Alluxio原理、技术与实践》
  • Calendar对象获取当前周的bug
  • 嵌入式环境buildroot的espeak配置与编译
  • 物理机环境搭建-linux部署nginx
  • 删除安装Google Chrome浏览器时捆绑安装的Google 文档、表格、幻灯片、Gmail、Google 云端硬盘、YouTube网址链接(Mac)
  • 硬件故障诊断:快速定位问题
  • IP代理与加速器:理解它们的区别与共同点
  • Java中List转字符串的方法
  • PyTorch实战:实现MNIST手写数字识别
  • 【计算机网络】深入理解TCP协议二(连接管理机制、WAIT_TIME、滑动窗口、流量控制、拥塞控制)
  • springboot整合sentinel完成限流
  • signal(SIGPIPE, SIG_IGN)