Try   HackMD

Leetcode 111. Minimum Depth of Binary Tree (C語言)

  • 題目
    Given a binary tree, find its minimum depth.

    The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

    Note: A leaf is a node with no children.

  • 範例

Example:

Given binary tree [3,9,20,null,null,15,7],

​   3
​  / \
​ 9  20
​   /  \
​  15   7
return its minimum depth = 2.
int minDepth(struct TreeNode* root){
    if(!root)return 0;
    if(!root->left && !root->right)return 1;
    else if(!root->left){
        return 1+minDepth(root->right);
    }
    else if(!root->right){
        return 1+minDepth(root->left);
    }
    return 1+fmin(minDepth(root->left),minDepth(root->right));
}

思路:空樹回傳0,左右子點為空代表只有自己是leaf回傳1,否則表示有子樹。

  1. 如果左子樹為空,回傳1+最小右子樹樹高
  2. 如果右子樹為空,回傳1+最小左子樹樹高
  3. 左右子樹皆不為空,回傳1+左右子樹樹高較小者。