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