📜  门| GATE-CS-2014-(Set-1) |问题 25(1)

📅  最后修改于: 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

总结

这道题通过递归的方法来求解二叉树的最小深度,思路比较简单,代码也比较容易实现。如果在面试中遇到了这道题,希望本篇文章对您有所帮助。