个人主页:CSDN清风莫追


1.题目描述

描述
求给定二叉树的最大深度,
深度是指树的根节点到任一叶子节点路径上节点的数量。
最大深度是所有叶子节点的深度的最大值。
:叶子节点是指没有子节点的节点。)

数据范围,树上每个节点的val满足
要求: 空间复杂度 ,时间复杂度

在这里插入图片描述

:示例中的输入是按照二叉树的层序遍历顺序,# 表示空。

2.算法设计思路

可以用递归的思路来解这个问题:

而对于左右子树的最大深度,我们也同样地使用上面的表达式计算。

直到递归到空的树,此时它的深度为 0 ,开始回升。

3.算法实现

注:这里并不是完整代码,而只是核心代码的模式

使用编程语言:C++

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    int maxDepth(TreeNode* root) {
        //到达叶子结点
        if(root ** nullptr) return 0;

        int max = 0;
        int deep1 = maxDepth(root->left) + 1;
        int deep2 = maxDepth(root->right) + 1;

        if(deep1 > deep2) max = deep1;
        else max = deep2;

        return max;
    }
};

4.运行结果

成功通过!

在这里插入图片描述


今天的分享就到这里啦,快来加入刷题大军叭!


感谢阅读

个人主页:CSDN清风莫追