diff --git a/Leecode/src/main/java/com/markilue/leecode/tree/second/T049_MinDepth.java b/Leecode/src/main/java/com/markilue/leecode/tree/second/T049_MinDepth.java index e534c5d..edeac2b 100644 --- a/Leecode/src/main/java/com/markilue/leecode/tree/second/T049_MinDepth.java +++ b/Leecode/src/main/java/com/markilue/leecode/tree/second/T049_MinDepth.java @@ -90,4 +90,29 @@ public class T049_MinDepth { return depth; } + + + /** + * 思路:评论区对于需要一直找左右的优化,实际上没有优化 + * 速度击败16.1%,内存击败39.79% + * @param root + * @return + */ + public int minDepth2(TreeNode root) { + if(root==null){ + return 0; + } + if(root.left==null&&root.right==null){ + return 1; + } + //2.如果左孩子和由孩子其中一个为空,那么需要返回比较大的那个孩子的深度 + int m1 = minDepth2(root.left); + int m2 = minDepth2(root.right); + //这里其中一个节点为空,说明m1和m2有一个必然为0,所以可以返回m1 + m2 + 1; + if(root.left == null || root.right == null) return m1 + m2 + 1; + + //3.最后一种情况,也就是左右孩子都不为空,返回最小深度+1即可 + return Math.min(m1,m2) + 1; + + } }