给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最小深度 2.
答:
注意:如果左子树或者右子树为空,另一个子树不为空,那么深度不为1,而是从根节点到不为空的叶子节点的距离作为二叉树的最小深度。
同样是利用递归的思想
class Solution {
public:
int getDepth(TreeNode* node) {
if (node == NULL) return 0;//结束条件
//下面是等价函数
// 当一个左子树为空,右不为空,这时并不是最低点
if (node->left == NULL && node->right != NULL) {
return 1 + getDepth(node->right);
}
// 当一个右子树为空,左不为空,这时并不是最低点
if (node->left != NULL && node->right == NULL) {
return 1 + getDepth(node->left);
}
return 1 + min(getDepth(node->left), getDepth(node->right));
}
//int minDepth(TreeNode* root) {
// return getDepth(root);
//}
};