题目一:
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
等同于寻找树的深度,直接递归找到最底层节点即可。
int maxDepth(TreeNode *root) {
if (root == NULL)
return 0;
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return max(leftDepth, rightDepth) + 1;
}
题目二:
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
这次是要找到离根节点最近的叶节点,不可以理解为寻找树的最浅深度(直接将上面的max改为min),最大的不同在于有一边为空时,还要到另一边去寻找,两边都非空才比较。
int minDepth(TreeNode *root)
{
if(root==NULL) return 0;
if(root->left ==NULL && root->right==NULL)
return 1;
else if(root->left ==NULL) //如果有一边节点为空,就要找另一边
return minDepth(root->right )+1;
else if(root->right ==NULL )
return minDepth(root->left )+1;
return min(minDepth(root->right ), minDepth(root->left )) +1; //两边都非空时才比较
}