leetcode--111. 二叉树的最小深度

此题和二叉树最大深度差不多

题目链接

https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/

一、题目

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

leetcode--111. 二叉树的最小深度

输入:root = [3,9,20,null,null,15,7]
输出:2
示例 2:

输入:root = [2,null,3,null,4,null,5,null,6]
输出:5

提示:

树中节点数的范围在 [0, 105] 内
-1000 <= Node.val <= 1000

二、代码

代码如下(示例):

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

int min(int a,int b)
{
    return a-b<0?a:b;
}
int minDepth(struct TreeNode* root){
    if(root == NULL) return 0;  //空树深度为0
        if(root -> left == NULL && root -> right == NULL) return 1; //左右子树为空,深度为1
        //根据题意,若一颗子树为空,则最小深度为非空子树的最小深度加一
        if(root -> left == NULL && root -> right != NULL) 
        return minDepth(root -> right) + 1;
        if(root -> left != NULL && root -> right == NULL) 
        return minDepth(root -> left) + 1;
        //若两颗子树都非空,则最小深度为左右子树最小深度较小者加一
        return min(minDepth(root -> left), minDepth(root -> right)) + 1;
}
上一篇:P5027 Barracuda


下一篇:leetcode 111 二叉树的最小深度