【LeetCode】升级打怪之路 Day 18:二叉树题型 —— 树的深度、高度、路经

news2024/11/26 22:46:14

今日题目:

  • 104. 二叉树的最大深度
  • 111. 二叉树的最小深度
  • 110. 平衡二叉树
  • 257. 二叉树的所有路径
  • 112. 路径总和

目录

    • Problem 1:树的深度
      • LC 104. 二叉树的最大深度 【easy】
      • LC 111. 二叉树的最小深度 【易错】
    • Problem 2:树的高度
      • LC 110. 平衡二叉树 【easy】
    • Problem 3:树的路径
      • LC 257. 二叉树的所有路径 【easy】
      • LC 112. 路径之和 【easy】

今天做的题目主要围绕在二叉树的题目中常见的几个概念:深度、高度、路径。

  • 求深度:设置一个全局遍历 deepth 表示递归调用过程中当前的深度,初始化为 0,对二叉树做递归遍历,每次递归进入左子树和右子树之前 deepth++,从左子树和右子树递归出来之后 deepth--
  • 求高度:空节点高度为 0,递归遍历的后序位置上,当前高度 height = max(leftHeight, rightHeight) + 1
  • 路径:也就是二叉树“根节点”到“叶子节点”的整条路径。这里可以利用一个性质:后序迭代遍历中,到达叶子节点时的 stack 就是从最上面的根节点到这个叶子节点的路径。其实,后序迭代遍历中,迭代到任何一个节点时的 stack 都是最上面的根节点到当前节点的路径。利用这个性质,我们就能很方便地找到我们想要找的路径,关键难点在于需要流畅地写出后序遍历的迭代版代码

今天整体难度不大,这几个思路也很常见,属于基础。

Problem 1:树的深度

LC 104. 二叉树的最大深度 【easy】

104. 二叉树的最大深度 | LeetCode

难度不大,但借助这个题可以看出求深度的一个思路:

树的深度

LC 111. 二叉树的最小深度 【易错】

111. 二叉树的最小深度 | LeetCode

这个题目有个易错点:需要明确好叶子节点指的是左右子树都是 null 的节点。而且这个题目要求的深度是指根节点到叶子节点的深度:

在这里插入图片描述
注意好这些易错点,代码架构与上一个题就差不多了:

树的深度 2

Problem 2:树的高度

LC 110. 平衡二叉树 【easy】

110. 平衡二叉树 | LeetCode

这个题目计算左右子树的高度并判断是否符合平衡二叉树的要求,关键就在于求高度。

按照思路来就可以,难度不大。

Problem 3:树的路径

这里主要可以利用:在后续迭代遍历中,迭代到某一个节点时,stack 中的节点序列就是根节点到这个节点的路径。按照这个思路,只要会写后续迭代遍历的代码,难度就不大了。

当然,可以利用递归的方式来获得路径,只需要在递归函数中加一个全局变量 path 来维护当前的路径即可,难度也不大。

LC 257. 二叉树的所有路径 【easy】

257. 二叉树的所有路径 | LeetCode

这个只需要使用后续迭代遍历,并在每一个叶子节点上将当前路径加入到结果集合中就可以了:

二叉树路径

LC 112. 路径之和 【easy】

112. 路径总和

与上一个题目类似,难度也不大。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式系统软件及操作系统

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记,未经本人许可,请勿转载,如发现本笔记内容的错误还望各位不吝赐教(笔记内容可能有误怕产生错误引导)。 考查选择题为多:嵌入式系统软件特点是什么…

解决Klipper下位机ID获取失败问题

使用硬件: 上位机:必趣派,版本CB1_Debian11_Klipper_kernel5.16_20230303 下位机:八爪鱼STM32F407 问题:上位机获取下位机ID失败。 解决:调试过程中,发现上位机和下位机之间没有物理连接&…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Stepper)

步骤导航器组件,适用于引导用户按照步骤完成任务的导航场景。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 仅能包含子组件StepperItem。 接口 Stepper(value?: { index?…

2021年江苏省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书

2021年江苏省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书 一、赛项时间:二、赛项信息三、竞赛内容:第一阶段任务书(300分)任务1:网络平台搭建(60分)任务2:网络安全设备…

AI 技术:改变世界的力量

人工智能(AI)是当今科技领域最热门的话题之一,它已经成为推动社会进步和经济发展的重要力量。AI 技术的应用范围非常广泛,从智能手机、自动驾驶汽车到医疗保健、金融服务等领域,都可以看到 AI 的身影。 那么&#xff0…

GIS学习笔记(四):GIS数据可视化综合(矢量数据)

矢量数据 arcgis的主要可视化工具:属性 符号系统 符号系统 按类别 这里不会涉及到数字的大小因素,只是按照字符的分类去做可视化 “唯一值”的含义 “建筑年代”字段共有10个年份,一个年份也许有多个数据( eg.1990年的建筑有20个)&…

JavaWeb——013SpringBootWeb综合案例(事务管理、AOP)

事务&AOP 目录 事务&AOP1. 事务管理1.1 事务回顾1.2 Spring事务管理1.2.1 案例1.2.2 原因分析1.2.3 Transactional注解 1.3 事务进阶1.3.1 rollbackFor1.3.3 propagation1.3.3.1 介绍1.3.3.2 案例 2. AOP基础2.1 AOP概述2.2 AOP快速入门2.3 AOP核心概念 3. AOP进阶3.1 …

传统SessionID,Cookie方式与SringSecurity+JWT验证方式

在Spring Boot框架中,可以使用Spring Session来处理会话管理。Spring Session允许开发者在不同的存储后端(如Redis、数据库等)之间共享和管理会话状态。通过Spring Session,开发者可以轻松地实现会话管理、会话失效以及跨多个节点…

使用函数返回值的循环、使用带返回值的函数

本文参考C Primer Plus进行C语言学习 文章目录 使用函数返回值的循环使用带返回值的函数 一.使用函数返回值的循环 #include<stdio.h> double power(double n,int p); int main() {double x,xpow;int exp;printf("Enter a number and the posotive integer power&…

J1周-ResNet-50算法

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 我的环境&#xff1a; 1.语言&#xff1a;python3.7 2.编译器&#xff1a;pycharm 3.深度学习框架Tensorflow/Pytorch 1.8.0cu111 一、问题引出 CNN能够提取低、中、…

Early if-conversion - 优化阅读笔记

Early if-conversion 用于对于没有很多可预测指令的乱序CPU。目标是消除可能误预测的条件分支。 来自分支两侧的指令都会被推测性地执行&#xff0c;并使用 cmov 指令选择结果。 // SSAIfConv 类在确定可能的情况下&#xff0c;对SSA形式的机器码执行if-conversion。该类不包…

为什么不要使用elasticsearch

互联网上有很多文章&#xff0c;都在讲为什么要使用elasticsearch&#xff0c;却很少有人讲为什么不要使用elasticsearch。作为深入研究elasticsearch四年&#xff0c;负责公司万亿级别检索的操盘手&#xff0c;借着这篇文章&#xff0c;给大家分享一下&#xff0c;为什么不要使…

jetson nano在python中illegal instruction

在使用nano原生的python中导入numpy报错 安装anaconda也装不上 安装miniforge可以安装上 参考 【nano系列】jetson nano 安装conda管理环境&#xff08;三&#xff09;_jetson 安装conda-CSDN博客 下载地址 Releases conda-forge/miniforge GitHub 下载完毕后执行 bash Mam…

Room+ViewModel+LiveData

Room框架支持的LiveData会自动监听数据库的变化&#xff0c;当数据库发生变化的时候&#xff0c;会调用onChanged函数更新UI 1.MainActivity package com.tiger.room2;import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.vie…

Vue3全家桶 - Pinia - 【1】(安装与使用 + Store + State + Getters + Actions)

Pinia pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或跨页面共享状态&#xff1b; 一、 安装与使用 pinia 安装语法&#xff1a;yarn add pinia npm install pinia创建一个 pinia &#xff08;根存储&#xff09;并将其传递给应用程序&#xff1a; 目标文件&am…

[C语言] 数据存储

类型意义&#xff1a; 1.类型决定内存空间大小&#xff08;大小决定了使用范围&#xff09; 2.如何看待内存空间的视角 类型分类 整形 类型大小(字节)short2int4long4long8 浮点型 类型大小(字节)float4double8long double12 构造类型 数组结构性struct联合union枚举enum 指…

七个项目掌握freertos

1、闪烁LED&#xff1a; 最基本的示例项目&#xff0c;涉及到创建一个简单的任务&#xff0c;用于控制LED的闪烁。这个项目会教你如何初始化FreeRTOS并创建任务。 #include "FreeRTOS.h" #include "task.h" #define LED_PIN (某个GPIO引脚)void vBlinkTas…

BUGKU-WEB cookies

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; 解题思路 看源码看F12&#xff1a;看请求链接看提示&#xff1a;cookies欺骗 相关工具 插件&#xff1a;ModHeader或者hackbarbase64解密 解题步骤 看源码 就是rfrgrggggggoaihegfdiofi48ty598whrefeoia…

2000-2023年7月全国各省专利侵权结案案件数量数据

2000-2023年7月全国各省专利侵权结案案件数量数据 1、时间&#xff1a;2000-2023年7月 2、指标&#xff1a;地区、年份、专利侵权纠纷行政案件-结案数目 3、范围&#xff1a;31省 4、来源&#xff1a;国家知识产权局&#xff0c;并由该局每个月公布的数据汇总而成 5、指标…