[leetcode]111. 二叉树的最小深度

1.题目:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回它的最小深度  2.
特别的,给定二叉树 [1,2],
    1
   /
  2
返回它的最小深度  2.

2.代码:

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

#define min(a,b) ((a)<(b)?(a):(b))
int minDepth(struct TreeNode* root) {
    if(root==NULL)
        return 0;
    int x=minDepth(root->left);
    int y=minDepth(root->right);
    if(x&&y)													//为了防止[1,2]情况,该情况应为2.
        return min(x,y)+1;
    if(x&&!y)													//只有左子树那最小就位左子树高度
        return x+1;
    else
        return y+1;
}

3.知识点:

二叉树递归。
#define min(a,b) ((a)<(b)?(a):(b))最后要带上括号,不然会成为 2<1?2:1+1,(2<1?2:1)+1,答案才不会错。

猜你喜欢

转载自blog.csdn.net/MJ_Lee/article/details/88427921