给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量
不管是求最大深度还是最小深度,都能使用深度优先搜索完成
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int minDepth(struct TreeNode* root) {
if(root==NULL)
return 0;
if(root->left==NULL&&root->right==NULL)
return 1;
int min_depth=INT_MAX;
if(root->left!=NULL)
min_depth=fmin(minDepth(root->left),min_depth);
if(root->right!=NULL)
min_depth=fmin(minDepth(root->right),min_depth);
return min_depth+1;
}
下main提供python的写法
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def minDepth(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
if not root.left and not root.right:
return 1
min_depth=10**9
if root.left:
min_depth=min(self.minDepth(root.left),min_depth)
if root.right:
min_depth=min(self.minDepth(root.right),min_depth)
return min_depth+1