第111题:二叉树的最小深度
一. 问题描述
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最小深度 2.
二. 解题思路
本题思路:采用深度优先遍历+递归的方式进行求解。
步骤一:构建递归函数(根节点),采用自下而上的方式,先从叶节点进行判断,找到其最低深度。
步骤二:然后递归上一层节点,判断其左右子树的节点的最小深度,重复递归,最终返回最低深度。
三. 执行结果
执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户
内存消耗 :37.6 MB, 在所有 java 提交中击败了56.49%的用户
四. Java代码
class Solution { public int minDepth(TreeNode root) { if(root==null) { return 0; }else { return getTree(root); } } public int getTree(TreeNode root) { int leftnum=1,rightnum=1; if(root.left!=null) { leftnum=getTree(root.left)+1; } if(root.right!=null) { rightnum=getTree(root.right)+1; } if(root.left!=null&&root.right!=null) { return Math.min(leftnum, rightnum); }else { return Math.max(leftnum, rightnum); } } }