题目描述
给定一个二叉树,找到自己的最小深度。最小深度是指从根节点到最近的叶节点的最短路径上的节点数量。
解题思路
递归
若为空树,返回0
若左子树为空,则返回右子树的最小深度 + 1(加1是因为要加上根这一层,下同)
若右子树为空,则返回左子树的最小深度 + 1
若左右子树均不为空,则取左、右子树最小深度的较小值, + 1
代码示例
class Solution {
public:
int run(TreeNode *root) {
if (!root) return 0;
int l = run(root->left);
int r = run(root->right);
if (l == 0 || r == 0) return 1 + l + r;
return 1 + min(l, r);
}
};