给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。

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,就放回,不为空就找遍历左右子树,这里分开记录左右子树的深度,最后直接比较大小。需要注意的是我们不能为了代码简洁,直接在递归的时候比较,因为在递归的时候再用三目运算,增大了时间复杂度。

发布了79 篇原创文章 · 获赞 6 · 访问量 3795

猜你喜欢

转载自blog.csdn.net/qq_41152046/article/details/104793176