题目:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。
class Solution {
public:
int run(TreeNode *root) {
if(root==NULL){
return 0;
}
//如果左右子树都为空,返回1
if(root->left==NULL&&root->right==NULL){
return 1;
}
//最小深度是根与叶子结点之间的距离,要找到叶子结点,如果左子树为空,就返回右子树的深度+1;
if(root->left==NULL){
return run(root->right)+1;
}
//如果右子树为空,就返回左子树的深度+1
if(root->right==NULL){
return run(root->left)+1;
}
//如果左右子树都不为空,返回左右子树中最小的深度+1;
return min(run(root->left),run(root->right))+1;
}
};
题目:给定一个二叉树,找到它的最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点数量。
思路:递归,求出左子树最大深度,求出右子树最大深度,取其中最大的数,再加上头结点(1),即可
边界条件:如果根节点为空,则返回0