一、最小深度
二叉树的最小深度为根节点到最近叶子的距离。
(1)空树直接返回false;
(2)只有一个根节点,返回深度1;
(3)单分支情况:
左子树为空,返回右子树的最大值+1;右子树为空,返回左子树的最大值+1;
(4)双分支情况:
返回左右子树的最小值+1.
class Solution {
public:
int run(TreeNode *root) {
if(root == NULL) return false;
if(root->left== NULL && root->right == NULL) return 1;
int leftnum = run(root->left);
int rightnum = run(root->right);
if(leftnum == 0) return rightnum+1;
else if(rightnum == 0) return leftnum+1;
else return min(leftnum,rightnum)+1;
}
};
二、最大深度
二叉树的最大深度为根节点到最远叶子的距离。
(1)空树返回0;
(2)只有一个根节点返回1;
(3)其他返回最有子树的最大值+1.
int maxDepth(TreeNode *root) {
if(root == NULL)
return 0;
int leftnum = maxDepth(root->left);
int rightnum = maxDepth(root->right);
return leftnum > rightnum ? (leftnum + 1) : (rightnum + 1);
}