📅  最后修改于: 2023-12-03 15:10:19.516000             🧑  作者: Mango
二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它满足以下属性:
根据这些属性,可以通过在 BST 上进行插入、查找、删除等操作,实现高效的数据处理。常见的应用场景包括排序、搜索、遍历等。
删除 BST 中的一个节点,可以分为以下几步:
通过实现以下代码,可以完成 BST 中节点的删除操作:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]:
if not root:
return root
elif key < root.val:
root.left = self.deleteNode(root.left, key)
elif key > root.val:
root.right = self.deleteNode(root.right, key)
else:
if not root.left and not root.right:
root = None
elif not root.left:
root = root.right
elif not root.right:
root = root.left
else:
minNode = self.findMin(root.right)
root.val = minNode.val
root.right = self.deleteNode(root.right, minNode.val)
return root
def findMin(self, node: TreeNode) -> TreeNode:
while node.left:
node = node.left
return node
其中 deleteNode
方法实现了节点的删除操作,findMin
方法用于查找节点的后继节点。
BST 是一种高效、易于实现的数据结构,能够支持多种常见操作。本文介绍了 BST 中节点的删除操作,通过实现相关代码,可以更好地理解其实现原理。