首页 > 其他分享 >104. 二叉树的最大深度

104. 二叉树的最大深度

时间:2023-06-05 16:39:12浏览次数:68  
标签:return res depth 二叉树 深度 root 104




104. 二叉树的最大深度

  • 题目
  • 算法设计:回溯
  • 算法设计:分解子问题



 


题目

传送门:https://leetcode.cn/problems/maximum-depth-of-binary-tree/

104. 二叉树的最大深度_最大深度


 


算法设计:回溯

回溯框架,请猛击:《常见递归模式》。

思路:遍历一遍二叉树,用一个外部变量记录每个节点所在的深度,取最大值就可以得到最大深度,这就是遍历二叉树计算答案的思路。

递归函数 = 回溯模式 + 前序位置 + 做某事(选出最大深度)

class Solution {
        int res = 0;
		int depth = 0;  // 记录遍历到的节点的深度
public:
    int maxDepth(TreeNode *root) {
		recall(root);
    	return res;
    }
	
	void recall(TreeNode *root) {
   		if (root == nullptr) 
        	return;
    
    	depth++;
    	res = max(res, depth);
    	recall(root->left);
    	recall(root->right);
    	depth--;
	}
};

 


算法设计:分解子问题

分解子问题框架,请猛击:《常见递归模式》。

一棵二叉树的最大深度可以通过子树的最大深度推导出来。

递归函数 = 分解子问题模式 + 后序位置 + 做某事【树的深度 = max(左子树最大深度 + 右子树最大深度)+ 根节点自己】

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (root == nullptr) return 0;
        return max(maxDepth(root->left), maxDepth(root->right)) + 1;
    }
};


标签:return,res,depth,二叉树,深度,root,104
From: https://blog.51cto.com/u_13937572/6417530

相关文章

  • 求树的最大深度,求树的最小深度
    树的深度       树的深度描述的树从根到当前节点的层级信息。求树的最大深度       解法:遍历所有的层级信息,找最大的。publicstaticintmaxDepth(TreeNoderoot){if(root==null){return0;}return1+Math.max(maxDepth(root.left),maxDep......
  • 树之深度优先遍历算法详解(DFS实现) LeetCode94
           本文以如下树结构为例深度优先(DeepFirstSearch)       树的孩子称作子树,对于一个树进行深度优先遍历,即将其某一子树下所有节点遍历完再去遍历其他子树。遍历的顺序以根为参照可分为先序遍历,中序遍历,后序遍历。遍历方式描述先序遍历根左右中序遍历左根右后......
  • Docker Registry深度历险
    目录前言环境问题缘起安装本地Registryminikube访问共享image前言上篇我们对Docker整体有了一定了解,知道了其中一个核心概念是Registry,下来就进行更深入的学习环境环境:macminiM1芯片;dockerdesktop(自带k8s)和minikube问题缘起之前确实对docker和k8s没有深入和体系化的学习,就是跑跑......
  • 深度解析iOS应用程序的生命周期
     摘要:iOS应用程序一般都是由自己编写的代码和系统框架组成,系统框架提供一些基本infrastructure给App来运行,而开发者则自己编写代码定制App的外观和行为,了解iOSInfrastructure及其如何工作对编写App很有帮助。iOS应用程序一般都是由自己编写的代码和系统框架(systemframeworks)组成......
  • 根据层序遍历结果来构建完全二叉树
    做实习笔试时遇到的一个题里用到了根据层序遍历的结果来构建二叉树。全部代码如下importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args)throw......
  • 基于深度学习的图像分类:使用卷积神经网络实现猫狗分类器
    摘要:深度学习在计算机视觉领域中具有广泛的应用。本文将介绍如何使用卷积神经网络(CNN)实现一个猫狗分类器。我们将使用Python和TensorFlow框架搭建一个简单的卷积神经网络模型,并利用猫狗图像数据集进行训练和测试。通过本文,读者将了解到深度学习在图像分类任务中的基本原理和实践应......
  • 小灰灰深度学习day6——线性代数
    importtorch#标量由只有一个元素的张量表示'''x=torch.tensor(3.0)y=torch.tensor(2.0)print(x+y)print(x*y)print(x/y)print(x**y)''''''向量可以被视为标量值组成的列表,这些标量值被称为向量的元素在数学上,具有一个轴的张量表示向量,一般张量具有任......
  • 深度解析JSTL标签库
    1. 什么是JSTL标签库?  53  - Java Standard Tag Lib(Java标准的标签库)  - JSTL标签库通常结合EL表达式一起使用。目的是让JSP中的java代码消失。  - 标签是写在JSP当中的,但实际上最终还是要执行对应的java程序。(java程序在jar包当中。)2. 使用JSTL标签库的步骤:532.1......
  • 链式二叉树的实现(c语言)
    本篇博客主要写了如何完成二叉树的前,中,后序遍历,查找特定值的节点,计算最大深度等。都是对二叉树的一些基本操作。二叉树基本操作头文件typedefcharBTDataType;typedefstructBinaryTreeNode{ BTDataTypedata; structBinaryTreeNode*left; structBinaryTreeNode*right;......
  • NWP和深度学习融入物理知识在预测天气方面有一些区别。
    NWP和深度学习融入物理知识在预测天气方面有一些区别。NWP是基于物理定律和数学方程构建的数值模型。它使用大气物理学、流体动力学和热力学等领域的物理知识来描述大气和地球系统的行为。NWP模型通过对物理过程进行建模和求解来预测天气变量的演变。这些模型需要对大气系统的初......