我正在阅读二叉树。在练习编码问题时,我遇到了一些要求找到二叉树的最小深度的解决方案。
现在根据我的理解,深度不是从根到节点的边(叶节点/二叉树的叶节点)

二叉树{1,2}的最小深度是多少

根据我的解决方案,它应该是 1。

最佳答案

我测试的解决方案

public int minDepth(TreeNode root) {
    if(root == null){
        return 0;
    }
    int ldepth = minDepth(root.left);
    int rdepth = minDepth(root.right);
    if(ldepth == 0){
        return 1+rdepth;
    }else if(rdepth == 0){
        return 1+ldepth;
    }

    return (1 + Math.min(rdepth, ldepth));
}

在这里,我们计算节点的 ldepth(最小左子树深度)和 rdepth(最小右子树深度)。然后,如果 ldepth 为零但 rdepth 不是,则表示当前节点不是叶节点,因此返回 1 + rdepth。如果 rdepth 和 ldepth 都为零,那么“if”条件仍然有效,因为我们为当前叶节点返回 1+0。

'else if' 分支的类似逻辑。在 'return' 语句中,因为两个 'if' 条件都失败了,我们返回 1(当前节点)+ 对左右分支的递归调用的最小值。

关于binary-tree - 二叉树的最小深度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24257706/

10-08 22:47