二叉树的最大深度和最小深度
给定一个二叉树 root ,返回其最大深度、最小深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode():val(0), left(nullptr), right(nullptr){}
TreeNode(int x):val(x), left(nullptr), right(nullptr){}
TreeNode(int x, TreeNode *left, TreeNode* right):val(x), left(left), right(right){}
};
int maxDepth(TreeNode* root){
if(root==nullptr) return 0;
return 1+max(maxDepth(root->left),maxDepth(root->right));
}
int minDepth(TreeNode* root){
if (root==nullptr) return 0;
if(root->left==nullptr&&!root->right) return 1+minDepth(root->right);
if(!root->left&&root->right) return 1+minDepth(root->left);
return 1+min(minDepth(root->left),minDepth(root->right));
}