📅  最后修改于: 2023-12-03 14:58:28.609000             🧑  作者: Mango
这道题的名称是“二叉搜索树的最小深度”,要求我们编写一个算法来计算给定二叉搜索树的最小深度。这个算法需要在时间复杂度为O(n)的情况下完成。
对于这道题,我们可以使用递归的方法进行求解。如果一棵树为空,则它的深度为0。如果它只有一个节点,则它的深度为1。如果它有左子树但没有右子树,那么它的最小深度为其左子树的最小深度加1。如果它有右子树但没有左子树,那么它的最小深度为其右子树的最小深度加1。如果它既有左子树也有右子树,那么它的最小深度为左右子树中最小深度的较小值加1。
具体实现可以看下面的代码:
def minDepth(root):
if not root:
return 0
left_depth = minDepth(root.left)
right_depth = minDepth(root.right)
if left_depth == 0 or right_depth == 0:
return left_depth + right_depth + 1
else:
return min(left_depth, right_depth) + 1
这道题通过递归的方法来求解二叉树的最小深度,思路比较简单,代码也比较容易实现。如果在面试中遇到了这道题,希望本篇文章对您有所帮助。