专栏首页学习日记Golang Leetcode 450. Delete Node in a BST.go

Golang Leetcode 450. Delete Node in a BST.go

版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/89175007

思路

递归操作,如果key值小于root,从左子树删除,大于root,从右子树删除,否则就删除root节点

code

type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

func deleteNode(root *TreeNode, key int) *TreeNode {
	if root == nil {
		return nil
	}
	if key < root.Val { //如果key小于root,从左子树删除
		root.Left = deleteNode(root.Left, key)
	} else if key > root.Val { //如果key大于root,从右子树删除
		root.Right = deleteNode(root.Right, key)
	} else { //删除root节点
		if root.Left == nil {
			return root.Right
		}
		if root.Right == nil {
			return root.Left
		}
		root.Val = findMin(root.Right)
		root.Right = deleteNode(root.Right, root.Val)
	}
	return root
}
func findMin(root *TreeNode) int {
	for root.Left != nil {
		root = root.Left
	}
	return root.Val
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Golang Leetcode 965. Univalued Binary Tree.go

    更多内容请移步我的repo:https://github.com/anakin/golang-leetcode

    anakinsun
  • Golang Leetcode 687. Longest Univalue Path.go

    更多内容请移步我的repo:https://github.com/anakin/golang-leetcode

    anakinsun
  • Golang Leetcode 669. Trim a Binary Search Tree.go

    更多内容请移步我的repo:https://github.com/anakin/golang-leetcode

    anakinsun
  • 利用rbd命令把 ceph pool 中的一个镜像导出

    查看镜像 [root@node1 ~]# rbd ls images a56330e7-79d7-4639-a68f-366ac344bfe2 eccfee07...

    院长技术
  • 浏览器环境检测

    本文是直接把seleniumpyppeteer 以及正常打开浏览器 的环境差异直接列出来

    爬虫
  • 【趣学程序】Linux流的重定向

    趣学程序
  • 每天一道剑指offer-二叉树的镜像

    今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。

    乔戈里
  • python中创建和遍历二叉树

    py3study
  • 《调教命令行04》触碰Linux的每个角落(长文)

    想要了解一个人,就先要了解他的灵魂。可是别说是灵魂了,就连一个真心的笑容,你在生活中也很难见到。更多的是菩萨手段,修罗心肠。很多人喜欢孩子的原因,就是因为他们悲...

    xjjdog
  • Linux修改用户名及相关信息(包括root)

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录

扫码关注云+社区

领取腾讯云代金券