Leetcode 111.二叉树的最小深度
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
返回它的最小深度 2.
解题思路:
标签:DFS
终止条件、返回值和递归过程:
- 叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点
- 当 root 节点左右孩子都为空时,返回 1
- 当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度
- 当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值
时间复杂度:O(n),n为树的节点数量
代码实现:
class Solution {
public int minDepth(TreeNode root) {
if(root == null){
return 0;
}
//左孩子和有孩子都为空的情况,说明到达了叶子节点,直接返回1即可
if(root.left == null && root.right == null){
return 1;
}
int leftDepth = minDepth(root.left);
int rightDepth = minDepth(root.right);
int res = Math.min(leftDepth,rightDepth);
//这里其中一个节点为空,说明leftDepth和rightDepth有一个必然为0,那么记录另一侧的深度
if(leftDepth == 0){
res = rightDepth;
}
if(rightDepth == 0){
res = leftDepth;
}
return res+1;
}
}
评论区