📅  最后修改于: 2023-12-03 15:22:01.565000             🧑  作者: Mango
二叉搜索树是一种有序的二叉树,它的每个节点包含一个键和一个值,左子树的键值小于该节点的键值,右子树的键值大于该节点的键值。本文将介绍如何从给定数组创建一个二叉搜索树,并找出该二叉搜索树的最大高度。
创建一个二叉搜索树的算法非常简单,它只需按照以下步骤进行:
下面是一个用Python实现的创建二叉搜索树的算法:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def sorted_array_to_bst(nums):
if not nums:
return None
mid = len(nums) // 2
root = TreeNode(nums[mid])
root.left = sorted_array_to_bst(nums[:mid])
root.right = sorted_array_to_bst(nums[mid+1:])
return root
算法中的TreeNode表示二叉树的节点,包含一个val值、一个左子节点和一个右子节点。sorted_array_to_bst函数用来创建一个二叉搜索树,它接受一个有序数组作为输入,返回二叉搜索树的根节点。
找出二叉搜索树的最大高度的算法很简单,它只需按照以下步骤进行:
下面是一个用Python实现的查找二叉搜索树最大高度的算法:
def max_depth(root):
if not root:
return 0
left_depth = max_depth(root.left)
right_depth = max_depth(root.right)
return 1 + max(left_depth, right_depth)
该算法中的max_depth函数用来查找二叉搜索树的最大高度。如果给定的树为空,则函数返回0;否则,函数返回1+左子树的最大高度和右子树的最大高度的较大值。
本文介绍了从给定数组创建二叉搜索树的算法和查找二叉搜索树最大高度的算法。这两个算法的时间复杂度都是O(nlogn)。对于给定的数组,我们可以先根据它创建二叉搜索树,然后再求出它的最大高度。