104.二叉树的最大深度

题目链接:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

我的思路:

       递归法: 

递归三部曲

我的代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int maxDepth(TreeNode* root) {int m = depth(root);return m;}int depth(TreeNode* cur){if(cur == nullptr) return 0;int left = depth(cur->left);int right = depth(cur->right);return 1 + max(left, right);}
};

层序遍历:

        因为层序遍历我们是知道有多少层的,每一层count++就可以知道最大深度。

敲一下代码复习一遍层序遍历

class Solution {
public:int maxDepth(TreeNode* root) {if(root == nullptr) return 0;std:queue<TreeNode*> que;que.push(root);int count = 0;while(!que.empty()){int size = que.size();for(int i = 0; i < size; i++){TreeNode* tem = que.front();que.pop();if(tem->left) que.push(tem->left);if(tem->right) que.push(tem->right);}count++;}return count;}
};

先序遍历:

先序理解不了,看一下随想录思路

个人感觉还是递归的套路,只是返回值放到参数里,这个时候就要注意向左右传depth的值都只是+1过的

class solution {
public:int result;void getdepth(TreeNode* node, int depth) {result = depth > result ? depth : result; // 中if (node->left == NULL && node->right == NULL) return ;if (node->left) { // 左depth++;    // 深度+1getdepth(node->left, depth);depth--;    // 回溯,深度-1}if (node->right) { // 右depth++;    // 深度+1getdepth(node->right, depth);depth--;    // 回溯,深度-1}return ;}int maxDepth(TreeNode* root) {result = 0;if (root == NULL) return result;getdepth(root, 1);return result;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101211.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OJ练习第159题——消灭怪物的最大数量

消灭怪物的最大数量 力扣链接&#xff1a;1921. 消灭怪物的最大数量 题目描述 你正在玩一款电子游戏&#xff0c;在游戏中你需要保护城市免受怪物侵袭。给你一个 下标从 0 开始 且长度为 n 的整数数组 dist &#xff0c;其中 dist[i] 是第 i 个怪物与城市的 初始距离&#…

网络技术十五:DHCP

DHCP 引入原因&#xff08;产生背景&#xff09; 手动为局域网中大量主机配置IP地址、掩码、网关等参数的工作繁琐&#xff0c;容易出错 DHCP可以自动为局域网中主机完成TCP/IP协议配置 DHCP自动配置避免了IP地址冲突的问题 定义 动态主机配置协议 用于为局域网中主机动态分…

【Sentinel】Sentinel与gateway的限流算法

文章目录 1、Sentinel与Hystrix的区别2、限流算法3、限流算法对比4、Sentinel限流与Gateway限流 1、Sentinel与Hystrix的区别 线程隔离有两种方式实现&#xff1a; 线程池隔离&#xff08;Hystrix默认采用&#xff09;信号量隔离&#xff08;Sentinel默认采用&#xff09; 服…

Python爬取天气数据并进行分析与预测

随着全球气候的不断变化&#xff0c;对于天气数据的获取、分析和预测显得越来越重要。本文将介绍如何使用Python编写一个简单而强大的天气数据爬虫&#xff0c;并结合相关库实现对历史和当前天气数据进行分析以及未来趋势预测。 1 、数据源选择 选择可靠丰富的公开API或网站作…

Android 12 源码分析 —— 应用层 四(SystemUI的基本布局设计及其基本概念)

Android 12 源码分析 —— 应用层 四&#xff08;SystemUI的基本布局设计及其基本概念&#xff09; 在上两篇文章中&#xff0c;我们介绍SystemUI的启动过程&#xff0c;以及基本的组件依赖关系。基本的依赖关系请读者一定要掌握&#xff0c;因为后面的文章&#xff0c;将会时…

单片机第二季:温度传感器DS18B20

目录 1&#xff0c;DS18B20介绍 2&#xff0c;DS18B20数据手册 2.1&#xff0c;初始化时序 2.2&#xff0c;读写时序 3&#xff0c;DS18B20工作流程 4&#xff0c;代码 1&#xff0c;DS18B20介绍 DS18B20的基本特征&#xff1a; (1)内置集成ADC&#xff0c;外部数字接…

Kafka核心原理第二弹——更新中

架构原理 一、高吞吐机制&#xff1a;Batch打包、缓冲区、acks 1. Kafka Producer怎么把消息发送给Broker集群的&#xff1f; 需要指定把消息发送到哪个topic去 首先需要选择一个topic的分区&#xff0c;默认是轮询来负载均衡&#xff0c;但是如果指定了一个分区key&#x…

判断工厂食堂实力,就看这一点!

在现代工厂运营中&#xff0c;食堂不再仅仅是员工用餐的地方&#xff0c;它已经变成了一个关键的组成部分&#xff0c;直接影响到员工的健康、生产力和满意度。为了提供更高质量的餐饮服务&#xff0c;满足多样化的饮食需求&#xff0c;并实现更高效的管理&#xff0c;越来越多…

学妹学Java(一)

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; Hello&#xff0c;亲爱的各位友友们&#xff0c;好久不见&#xff0…

JZ12 矩阵中的路径

剑指Offer编程链接&#xff1a;JZ12 题目描述&#xff1a; 思路&#xff1a;递归回溯的方法&#xff0c;总结一下什么情况需要使用递归&#xff1a; 递归在解决问题时&#xff0c;通常涉及以下情况&#xff1a; 问题可被分解为较小的相似子问题。子问题与原问题具有相同的结…

leetcode_27_最小栈

class MinStack { public:MinStack() {}void push(int val) {//只要是压栈&#xff0c;先将元素保存到_elem中_elem.push(val);//如果x小于_min中栈顶的元素&#xff0c;将x再压入_min中if(_min.empty() || val < _min.top()){_min.push(val);}}void pop() {//如果——min栈…

前端面试0906

// 请给出输出结果 function foo(){ console.log(a); } function bar(){ var a 3; console.log(this.a); foo(); } var a 2; bar(); 2 2 // 请从下面的问题中挑选3道进行回答 1. 防抖和节流分别是什么&#xff0c;一般用在什么场景&#xff1f; 防抖&#xff08;Debounc…