递归修剪二分查找树(Trimming a Binary Search Tree)是指通过递归的方式,移除树中不符合特定条件的节点,使得剩余的树仍然保持二分查找树的性质。二分查找树(BST)是一种特殊的二叉树,其中每个节点的值都大于其左子树中的所有节点值,并且小于其右子树中的所有节点值。
递归修剪二分查找树主要有以下几种类型:
以下是一个使用递归修剪二分查找树的示例代码,假设我们要移除所有值不在指定范围内的节点:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def trimBST(root, low, high):
if not root:
return None
# 如果当前节点的值小于low,那么左子树中所有节点都不符合条件
if root.val < low:
return trimBST(root.right, low, high)
# 如果当前节点的值大于high,那么右子树中所有节点都不符合条件
if root.val > high:
return trimBST(root.left, low, high)
# 当前节点的值在范围内,递归修剪左右子树
root.left = trimBST(root.left, low, high)
root.right = trimBST(root.right, low, high)
return root
通过以上方法,可以有效地修剪二分查找树,保持其性质并优化性能。
领取专属 10元无门槛券
手把手带您无忧上云