📅  最后修改于: 2023-12-03 15:26:42.496000             🧑  作者: Mango
二叉搜索树(Binary Search Tree,简称BST)是一种特殊的二叉树结构,其中每个节点的左子树的值都小于该节点的值,右子树的值都大于该节点的值。BST的一个重要应用是在快速地查找和插入数据。
有时候需要查找BST的最左和最右节点,即最小值和最大值节点。这个问题可以使用遍历BST的方法来解决。本文将介绍如何根据给定的遍历顺序来查找BST的最左和最右节点,并给出相应的Python代码。
BST的三种常见遍历方式是:
通过中序遍历的方法,我们可以得到BST中所有节点的有序列表。因此,可以使用中序遍历的方法,遍历整棵树,并记录最小值节点和最大值节点。
以下是Python代码实现:
class TreeNode:
def __init__(self, val=None):
self.val = val
self.left = None
self.right = None
class Solution:
def __init__(self):
self.min_node = None
self.max_node = None
def findMinMax(self, root: TreeNode):
self.findMin(root)
self.findMax(root)
return (self.min_node, self.max_node)
def findMin(self, node: TreeNode):
if node is None:
return
while node.left:
node = node.left
self.min_node = node
def findMax(self, node: TreeNode):
if node is None:
return
while node.right:
node = node.right
self.max_node = node
在上面的代码中,我们定义了TreeNode
类表示BST的节点。我们定义了一个Solution
类,其中有两个实例变量min_node
和max_node
,用于记录BST的最小值节点和最大值节点。我们定义了一个findMinMax
方法,该方法调用findMin
和findMax
方法来查找BST的最小值节点和最大值节点。findMin
方法和findMax
方法通过遍历BST来查找最左和最右节点。
本文介绍了如何根据给定的遍历顺序来查找BST的最左和最右节点。我们使用中序遍历的方法,遍历整棵树,并记录最小值节点和最大值节点。这篇文章的Python代码实现可以在 here 找到。