【leetcode】104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
解题思路:
深度优先搜索
假设左子树的最大深度 为 D1,右子树的最大深度 为 D2,那么当前二叉树的最大深度为D1 和 D2 的最大值 +1(根节点的深度1)。
然后再依次递归遍历左右子树,直到root 为 空,则退出。
代码:
C:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int maxDepth(struct TreeNode* root){
if(root == NULL)
return 0;
else
return fmax(maxDepth(root->left), maxDepth(root->right)) + 1;
}
备注:
fmax()函数是cmath标头的库函数,用于查找给定数字的最大值,它接受两个数字并返回较大的一个。
用法:fmax(x, y);
参数: x,y –是用于查找较大值的数字。
返回值: double-返回x和y中的较大值的double值。