【牛客刷题-算法】 NC13 二叉树的最大深度

简介: 【牛客刷题-算法】 NC13 二叉树的最大深度

1.题目描述


描述

求给定二叉树的最大深度,

深度是指树的根节点到任一叶子节点路径上节点的数量。

最大深度是所有叶子节点的深度的最大值。

(注:叶子节点是指没有子节点的节点。)


数据范围:0 ≤ n ≤ 100000 0≤n≤1000000≤n≤100000,树上每个节点的val满足 ∣ v a l ∣ ≤ 100 ∣val∣≤100∣val∣≤100

要求: 空间复杂度 O ( 1 ) O ( 1 ) O(1)O(1)O(1)O(1),时间复杂度 O ( n ) O ( n ) O(n)O(n)O(n)O(n)


image.png


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


2.算法设计思路


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


二叉树的最大深度 = m a x { 左子树最大深度,右子树最大深度 } + 1 二叉树的最大深度 = max\{左子树最大深度,右子树最大深度\}+1二叉树的最大深度=max{左子树最大深度,右子树最大深度}+1

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


直到递归到空的树,此时它的深度为 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.运行结果


成功通过!


image.png


结束语:

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

相关文章
|
3天前
|
算法
数据结构和算法学习记录——层序遍历(层次遍历)、二叉树遍历的应用(输出二叉树中的叶节点、求二叉树的高度、二元运算表达式树及其遍历、由两种遍历序列确定二叉树)
数据结构和算法学习记录——层序遍历(层次遍历)、二叉树遍历的应用(输出二叉树中的叶节点、求二叉树的高度、二元运算表达式树及其遍历、由两种遍历序列确定二叉树)
8 0
|
4天前
|
算法
基础算法-去重字符串,辗转相除法,非递归前序遍历二叉树题型分析
基础算法-去重字符串,辗转相除法,非递归前序遍历二叉树题型分析
|
20天前
|
存储 算法 IDE
数据结构与算法⑯(第四章_下)二叉树的层序遍历+判断完全二叉树+一道OJ
数据结构与算法⑯(第四章_下)二叉树的层序遍历+判断完全二叉树+一道OJ
28 1
|
20天前
|
算法
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)(下)
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)
8 1
|
20天前
|
算法 C++
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)(上)
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)
10 1
|
20天前
|
机器学习/深度学习 算法 分布式数据库
数据结构与算法⑭(第四章_下)二叉树的模拟实现和遍历代码(下)
数据结构与算法⑭(第四章_下)二叉树的模拟实现和遍历代码
28 1
|
20天前
|
算法
数据结构与算法⑭(第四章_下)二叉树的模拟实现和遍历代码(上)
数据结构与算法⑭(第四章_下)二叉树的模拟实现和遍历代码
25 1
|
1天前
|
算法
基于GA-PSO遗传粒子群混合优化算法的VRPTW问题求解matlab仿真
摘要: 本文介绍了考虑时间窗的车辆路径问题(VRPTW),在MATLAB2022a中进行测试。VRPTW涉及车辆从配送中心出发,服务客户并返回,需在指定时间窗内完成且满足车辆容量限制,目标是最小化总行驶成本。文章探讨了遗传算法(GA)和粒子群优化(PSO)的基本原理及其在VRPTW中的应用,包括编码、适应度函数、选择、交叉、变异等步骤。同时,提出了动态惯性权重、精英策略、邻域搜索、多种群和启发式信息等优化策略,以应对时间窗限制并提升算法性能。
|
2天前
|
算法
m基于PSO粒子群优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB2022a仿真实现了基于遗传优化的NMS LDPC译码算法,优化归一化参数以提升纠错性能。NMS算法通过迭代处理低密度校验码,而PSO算法用于寻找最佳归一化因子。程序包含粒子群优化的迭代过程,根据误码率评估性能并更新解码参数。最终,展示了迭代次数与优化过程的关系,并绘制了SNR与误码率曲线。
10 2
|
2天前
|
算法 调度 决策智能
基于GA-PSO遗传粒子群混合优化算法的DVRP问题求解matlab仿真
该文介绍了车辆路径问题(VRP)的优化求解,特别是动态车辆路径问题(DVRP)。在MATLAB2022a中运用GA-PSO混合优化算法进行测试,展示了运行结果图像。核心程序包含粒子更新、交叉、距离计算等步骤。DVRP在物流配送、运输调度中有广泛应用,目标是最小化行驶距离并满足车辆容量限制。遗传算法通过选择、交叉和变异操作寻找解,而粒子群优化模拟鸟群行为更新速度和位置。GA-PSO混合算法结合两者优点,提高搜索效率。在DVRP中,算法需考虑问题特性和约束,以找到高质量解。