1.给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
2.代码展示
/**
* 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;
}
int a = 1+maxDepth(root->left);
int b = 1+maxDepth(root->right);
return a>b?a:b;
}
3.解题思路
这里采用的是先序遍历的方法,先找根,如果根为NULL,就放回,不为空就找遍历左右子树,这里分开记录左右子树的深度,最后直接比较大小。需要注意的是我们不能为了代码简洁,直接在递归的时候比较,因为在递归的时候再用三目运算,增大了时间复杂度。