Leetcode111. 二叉树的最小深度(dfs)
Posted !0 !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode111. 二叉树的最小深度(dfs)相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/
解题思路
我们可以来利用深搜,遍历整棵树,然后记录最小深度。对于每一个非叶子节点,我们只需要分别计算其左右子树的最小叶子节点深度。这样就将一个大问题转化为了小问题,可以递归地解决该问题。
代码
class Solution {
public int minDepth(TreeNode root) {
if (root == null) //根节点为空,返回0
return 0;
if (root.left == null && root.right == null)//左右子树都为空,代表找到了一个子树的深度
return 1;
int ans = Integer.MAX_VALUE; //记录答案
if (root.left != null) //如果左子树不为空,则递归左子树最小深度
ans = Math.min(minDepth(root.left), ans);
if (root.right != null) //如果右子树不为空,则递归右子树最小深度
ans = Math.min(minDepth(root.right), ans);
return ans + 1;
}
}
复杂度分析
- 时间复杂度:O(n)
- 空间复杂度:O(H),二叉树的高度
以上是关于Leetcode111. 二叉树的最小深度(dfs)的主要内容,如果未能解决你的问题,请参考以下文章