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

Golang | Leetcode Golang题解之第450题删除二叉搜索树的节点

题目:

题解:

func deleteNode(root *TreeNode, key int) *TreeNode {
    var cur, curParent *TreeNode = root, nil
    for cur != nil && cur.Val != key {
        curParent = cur
        if cur.Val > key {
            cur = cur.Left
        } else {
            cur = cur.Right
        }
    }
    if cur == nil {
        return root
    }
    if cur.Left == nil && cur.Right == nil {
        cur = nil
    } else if cur.Right == nil {
        cur = cur.Left
    } else if cur.Left == nil {
        cur = cur.Right
    } else {
        successor, successorParent := cur.Right, cur
        for successor.Left != nil {
            successorParent = successor
            successor = successor.Left
        }
        if successorParent.Val == cur.Val {
            successorParent.Right = successor.Right
        } else {
            successorParent.Left = successor.Right
        }
        successor.Right = cur.Right
        successor.Left = cur.Left
        cur = successor
    }
    if curParent == nil {
        return cur
    }
    if curParent.Left != nil && curParent.Left.Val == key {
        curParent.Left = cur
    } else {
        curParent.Right = cur
    }
    return root
}

http://www.kler.cn/news/336998.html

相关文章:

  • 【React】setState 批量更新
  • 【JavaEE初阶】深入理解线程池的概念以及Java标准库提供的方法参数分析
  • 【学习笔记】手写一个简单的 Spring MVC
  • 【代码随想录Day32】动态规划Part01
  • 【黑马点评】0.环境配置--Redis6.2.6和可视化工具在Windows上的安装
  • leetcode-哈希篇1
  • String字符串 StringBuilder之常用API
  • 开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现推理加速的正确姿势-Docker-OpenResty(三)
  • 提升 CI/CD 稳定性:Jenkins 开机自检与推送通知
  • macos php开发环境之macport安装的php扩展安装,php常用扩展安装,port中可用的所有php扩展列表
  • C++ 语言特性21 - 别名模板
  • Python 之进阶语法:with...as...
  • ubuntu下vscode插件arm keil studio pack遇到的问题
  • 京东web 京东e卡绑定 第二部分分析
  • OpenCV视频I/O(17)视频写入类VideoWriter之检查视频编写器是否已经成功初始化的函数isOpened()的使用
  • 【QT Quick】C++交互:与QML类型转换
  • macOS开发环境配置与应用开发问题的延伸探讨
  • 什么是安全运营中心 SOC?
  • ARM base instruction -- movk
  • 将自己写好的项目部署在自己的云服务器上