📅  最后修改于: 2023-12-03 15:42:13.703000             🧑  作者: Mango
该题考察的是二叉搜索树(BST)和其操作。二叉搜索树具有以下性质:
常见的操作有插入节点、查找节点和删除节点三种。下面对此进行详细介绍。
向二叉搜索树中插入一个节点的过程如下:
以下是插入节点的示例代码:
def insert(root, key):
if not root:
return Node(key)
if key < root.val:
root.left = insert(root.left, key)
elif key > root.val:
root.right = insert(root.right, key)
return root
其中,root
为根节点,key
为要插入的值。函数返回插入后的根节点。
查找节点的过程与插入类似,不同之处在于:
以下是查找节点的示例代码:
def search(root, key):
if not root or root.val == key:
return root
if key < root.val:
return search(root.left, key)
else:
return search(root.right, key)
其中,root
为根节点,key
为要查找的值。如果找到了该节点,则函数返回该节点,否则返回None
。
删除节点需要考虑多种情况,具体过程如下:
以下是删除节点的示例代码:
def delete(root, key):
if not root:
return root
elif key < root.val:
root.left = delete(root.left, key)
elif key > root.val:
root.right = delete(root.right, key)
else:
if not root.left:
return root.right
elif not root.right:
return root.left
temp = findMin(root.right)
root.val = temp.val
root.right = delete(root.right, temp.val)
return root
def findMin(root):
while root.left:
root = root.left
return root
其中,root
为根节点,key
为要删除的值。函数返回删除节点后的根节点。
以上就是二叉搜索树的操作介绍,包括插入节点、查找节点和删除节点三种。