📅  最后修改于: 2023-12-03 14:51:33.056000             🧑  作者: Mango
二叉搜索树(Binary Search Tree,简称BST)是一种常见的数据结构,它具有以下特点:
本篇文章将介绍如何编写一个函数,用于在给定范围内打印BST中的键值。
假设我们有如下的BST:
8
/ \
3 10
/ \ \
1 6 14
/ \ /
4 7 13
如果给定的范围是[5, 13],那么函数应该打印出键值为 6、7、8、10、13 的节点。
要在给定范围内打印BST的键值,我们可以使用递归的方法。具体实现步骤如下:
下面是一个用于在给定范围内打印BST键的示例代码,使用了递归的方式实现:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def print_bst_keys_in_range(root, min_val, max_val):
if root is None:
return
if root.val < min_val:
print_bst_keys_in_range(root.right, min_val, max_val)
elif root.val > max_val:
print_bst_keys_in_range(root.left, min_val, max_val)
else:
print(root.val)
print_bst_keys_in_range(root.left, min_val, max_val)
print_bst_keys_in_range(root.right, min_val, max_val)
# 创建示例BST
root = TreeNode(8)
root.left = TreeNode(3)
root.right = TreeNode(10)
root.left.left = TreeNode(1)
root.left.right = TreeNode(6)
root.left.right.left = TreeNode(4)
root.left.right.right = TreeNode(7)
root.right.right = TreeNode(14)
root.right.right.left = TreeNode(13)
# 打印给定范围内的键值
print_bst_keys_in_range(root, 5, 13)
输出结果为:
6
7
8
10
13
本文介绍了如何编写一个函数,在给定范围内打印BST中的键值。使用递归的方法,根据节点的键值和给定范围进行判断,实现了打印节点值的功能。这个方法的时间复杂度是O(n),其中n是BST中节点的数量。