LeetCode 111. 二叉树的最小深度(C++、python)

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

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

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

示例:

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

    3
   / \
  9  20
    /  \
   15   7

返回它的最小深度  2.

C++

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int minDepth(TreeNode* root) 
    {
        if(NULL==root)
        {
            return 0;
        }
        else
        {
            int a=minDepth(root->left);
            int b=minDepth(root->right);
            if(NULL==root->left || NULL==root->right)
            {
                if(root->left==root->right)
                {
                    return 1;
                }
                else if(root->left!=NULL)
                {
                    return 1+a;
                }
                else
                {
                    return 1+b;
                }
            }
            else
            {
                return 1+min(a,b);
            }
        }
    }
};

python

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def minDepth(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if None==root:
            return 0
        else:
            a=self.minDepth(root.left)
            b=self.minDepth(root.right)
            if None==root.left or None==root.right:
                if root.left==root.right:
                    return 1
                elif root.left!=None:
                    return 1+a
                else:
                    return 1+b
            else:
                return 1+min(a,b)
                    
        

 

你可能感兴趣的:(LeetCode)