题目要求
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。
思路
如果根节点为空,那么树的最大深度为0,然后我们分别取到左子树和右子树的深度,取深度的最大值加一,使用深度遍历,这里需要写一个max的函数,因为在c语言中没有,并且不需要写,否则会因为第一遍遍历的时候没有记录深度而在计算结果的比较哪个大的时候需要再次遍历,这样就会超出时间限制,这也就是为啥需要max函数的原因。
图解
代码实现
int max(int x, int y)
{
return x > y ? x : y;
}
int maxDepth(struct TreeNode* root){
if (root == NULL)
{
return 0;
}
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}