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

Golang | Leetcode Golang题解之第538题把二叉搜索树转换为累加树

题目:

题解:

func getSuccessor(node *TreeNode) *TreeNode {
    succ := node.Right
    for succ.Left != nil && succ.Left != node {
        succ = succ.Left
    }
    return succ
}

func convertBST(root *TreeNode) *TreeNode {
    sum := 0
    node := root
    for node != nil {
        if node.Right == nil {
            sum += node.Val
            node.Val = sum
            node = node.Left
        } else {
            succ := getSuccessor(node)
            if succ.Left == nil {
                succ.Left = node
                node = node.Right
            } else {
                succ.Left = nil
                sum += node.Val
                node.Val = sum
                node = node.Left
            }
        }
    }
    return root
}

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

相关文章:

  • Spring Boot 项目创建
  • 图像处理-Ch6-彩色图像处理
  • C++的侵入式链表
  • Postman接口测试工具使用详解
  • 3D架构图软件 iCraft Editor 正式发布 @icraftplayer-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
  • 数据分析思维(五):分析方法——假设检验分析方法
  • 质数的和与积
  • 什么是ajax,为什么使用ajax?ajax都有哪些优点和缺点?
  • 「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目
  • 恢复Ubuntu+Windows10双系统安装前状态及分区还原详细步骤
  • L5.【LeetCode笔记】移除链表元素
  • 如何修改远程分支?修改了会影响什么?
  • python中t是什么意思
  • 直播系统搭建教程安装说明
  • IT架构管理
  • SpringBoot在线教育系统:性能监控与优化
  • 项目活动进度计算题
  • arkUI:布局的属性(margin、padding、border、borderRadius)
  • Spring Boot驱动的多维分类知识管理系统
  • 雷池社区版 7.1.0 LTS 发布了
  • U8C表体存货或编码相关的字段赋值不上
  • Pr 视频效果:超级键
  • 文件外发记录监控 | 公司文档外发如何跟踪数据流向?6大策略让文件不再滥发泄密! (2024全面解读)
  • 高效率的快捷回复软件 —— 客服宝聊天助手
  • 搜维尔科技:SenseGlove案例-利用VR触觉技术培训机组人员
  • Netty原来就是这样啊(二)