代码随想录算法训练营第十六天二叉树 java : 104.二叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

news2025/1/16 8:02:19

文章目录

  • 前言
    • 深度是个啥,高度又是啥
  • Leetcode 104.二叉树的最大深度
    • 题目讲解
  • Leetcode 111.二叉树的最小深度
    • 题目讲解
  • Leetcode 222.完全二叉树的节点个数(优先掌握递归
    • 题目讲解
  • 总结

前言

今天将主要围绕 深度高度 来展开
复习一下递归三部曲

  • 确定递归函数的参数和返回值
  • 确定终止条件
  • 确定单层递归的逻辑

深度是个啥,高度又是啥

深度: 从根节点 到 最远叶子节点的距离 一般采用前序遍历
在这里插入图片描述
这三叉树的最大深度 为 3
高度 : 从最远叶子节点 到 根节点的距离 一般采用后续遍历
在这里插入图片描述
因为根节点的高度 就是 这颗二叉树的最大深度 今天的题都是用后续遍历做的

Leetcode 104.二叉树的最大深度

题目讲解

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
//  按照高度即深度的思路 因为 深度 是按照后序算法来做的
         if( root ==null)
         {
             return 0;
         }
       int leftHeight = maxDepth( root.left);
       int rightHeight = maxDepth(root.right);
       int Height = Math.max( leftHeight,rightHeight) +1;
       return Height;
    }
}

Leetcode 111.二叉树的最小深度

题目讲解

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
  
       if( root == null)
       {
           return 0;
       }
       int leftHeight = minDepth(root.left);
       int rightHeight = minDepth(root.right);
       if( root.left!=null && root.right==null)
       {
           return leftHeight+1;
       }
       if( root.right!= null && root.left==null)
       {
           return rightHeight+1;
       }

       return Math.min( rightHeight,leftHeight)+1;
    }
}

Leetcode 222.完全二叉树的节点个数(优先掌握递归

题目讲解

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int countNodes(TreeNode root) {
//   
   if( root ==null)
     return 0;
   TreeNode left = root.left;
   TreeNode right = root.right;
    int leftdepth =0;
    int rightdepth=0;  
   while( left!= null)
   {
       left= left.left;
       leftdepth++;
   }
   while( right!=null)
   {
       right=right.right;
       rightdepth++;
   }
   if( rightdepth== leftdepth)
   {
       return (2<<leftdepth)-1;
   }

   return countNodes(root.left)+countNodes(root.right)+1;
 
    }
}

总结

无论是求二叉树的最大深度还是最小深度 我都采用了后续遍历的方式
左右 中 +1到父节点 加1再到根节点
在这里插入图片描述
虽然不喜欢糊弄事 不过接下来还要配环境就到这吧

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

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

相关文章

已解决微软Office2016 Excel卡顿\缓慢、打开第二个文件加载很慢问题(亲测有效)

已解决微软Office2016 Excel卡顿\缓慢、打开第二个文件加载很慢问题&#xff08;亲测有效&#xff09; 文章目录问题描述问题分析解决方法1解决方法2解决方法31) 修改基本设置2&#xff09;修改配置文件问题描述 我的电脑环境是&#xff1a;Windows 10 Excel 2016版本。 文件…

【前端之旅】Nginx快速入门

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

【Blender UV映射02】智能UV映射 创建和应用法线纹理

写在前面 前面的学习记录&#xff1a; 【Blende UV映射01】创建UV 使用UV贴图处理纹理 依旧是跟着Blender 2.8 UV Mapping教程&#xff0c;本文是教程的P8-P12的过程记录。 1 一些操作记录 调整滚轮缩放 如果发现Blender缩放过快&#xff0c; 键盘的"/"数字键…

Java并发编程实战 学习笔记 Day7

并发编程是比较进阶的知识&#xff0c;涉及到很多底层的东西&#xff0c;学习起来是比较困难的。并发编程的bug更多的是偶发性的&#xff0c;很难复现&#xff0c;排查起来也很困难&#xff0c;要想快速解决问题&#xff0c;就要理解并发编程的本质&#xff0c;追本溯源&#x…

Android ANR bugreport log分析

最近工作中频繁遇到设备ANR问题&#xff0c;而且是概率性的那种&#xff0c;于是决定花点时间找找规律复现分析下 说道这里&#xff0c;抓日志是问题解决的最有效途径&#xff0c;这里不得不说一下 bugreport log,其实网上关于它的分析方法有很多&#xff0c;在此仅仅是为了记录…

小型水库在线监测解决方案

一、方案背景水利部全国水利普查显示我国共有水库98002座&#xff0c;其中小型水库93308座。水库对防汛减灾、供水保障和农业灌溉等至关重要&#xff0c;水库的稳定运行关系到下游人民群众的生命财产安全&#xff0c;关系到当地经济发展和社会稳定。在2020年11月18日国务院常务…

EasyVim:简单强大的VIM配置

EasyVim 简单强大的vim配置&#xff0c;熟练后可大大提高开发效率&#xff08;VS Code的两倍以上&#xff09;。 安装 安装过程需要从github下载很多插件&#xff0c;国内尽量挂VPN git clone https://github.com/yuesong-feng/EasyVim cd EasyVim/ sh ./install.sh vim :P…

JavaScript基础(16)_数组方法、数组遍历、foreach

数组方法unshift():向数组开头添加一个或多个元素&#xff0c;并返回新的数组长度。向前边插入元素以后&#xff0c;其他的元素索引会依次调整。push():向数组的末尾添加一个或多个元素&#xff0c;并返回数组新的长度。该方法会将数组新的长度作为返回值返回。shift():删除数组…

【工具推荐】 Obsidian 插件 Obsidian to Flomo 一键同步内容到 Flomo 插件

目录一、Obsidian、Flomo、Obsidian to Flomo 他们都是什么&#xff1f;1. 什么是 Obsidian &#xff1f;2. 什么是Flomo &#xff1f;3. 什么是Obsidian to Flomo &#xff1f;二、如何安装 Obsidian to Flomo &#xff1f;三、插件使用方法1. 启用插件并配置API四、如何使用插…

《2022大数据产业年度创新技术突破》榜重磅发布丨金猿奖

‍年度金猿榜单/奖项本届“数据猿年度金猿策划活动——2022大数据产业创新技术突破榜单/奖项”由金猿&数据猿共同推出。‍数据智能产业创新服务媒体——聚焦数智 改变商业2022年下半年度&#xff0c;由数据猿、金猿组委会共同推出的第五届 “年度金猿季大型主题策划活动”…

Unity Netcode for GameObjects多人联机(源文件)

一、安装Netcode for Gameobjects Netcode for Gameobjects是Unity新推出的联机解决方案&#xff0c;该解决方案目前处于初期&#xff0c;相关功能不是很完善&#xff0c;但是用起来还不错。下面介绍一下相关用法。 首先下载安装Netcode for Gameobjects&#xff0c;其官方网站…

Elasticsearch入门介绍及Linux安装

前言Elasticsearch是一款分布式高性能的全文搜索引擎&#xff0c;为什么会需要这个呢&#xff0c;像我们平常使用的最多的存储工具就是Mysql&#xff0c;在业界也是非常有名的&#xff0c;我们大部分结构化数据都是用它来存储的&#xff0c;sql语言的操作也是非常方便&#xff…

助力“智慧港口”建设,北部湾港联合美创打造的主数据管理系统上线!

数字化浪潮下&#xff0c;港口企业发展将致力于以数据价值提升和数据价值创造为目标&#xff0c;打造新型“智慧港口”&#xff0c;实现更加经济的港口资源统筹高效利用并降低各类成本&#xff0c;企业通过逐步转变信息资源管理工作模式和利用方式&#xff0c;深度应用新一代信…

在GCP上创建Cloud SQL的三种方式(Console,gcloud,Terraform)

1 简介 Cloud SQL 是GCP上的关系型数据库&#xff0c;常用的有三种方式来创建&#xff1a; (1) 界面操作 (2) 命令行 gcloud (3) Terraform 在开始之前&#xff0c;可以查看&#xff1a;《初始化一个GCP项目并用gcloud访问操作》。 2 GCP 操作界面 登陆GCP&#xff0c;选…

Chevereto V4 首页显示图片托管数量的实现方法

博主最近一直想在Chevereto V4 首页显示图片托管数量&#xff0c;但是网上的方法只针对于Chevereto V3&#xff0c;V4却没有相关教程&#xff0c;查询谷歌也无结果&#xff0c;经博主查询大量案例今天为大家分享一下 Chevereto V4 首页显示图片托管数量的实现方法。1. 修改后台…

70.语义分割和数据集

在 之前讨论的目标检测问题中&#xff0c;我们一直使用方形边界框来标注和预测图像中的目标。 本节将探讨语义分割&#xff08;semantic segmentation&#xff09;问题&#xff0c;它重点关注于如何将图像分割成属于不同语义类别的区域。 与目标检测不同&#xff0c;语义分割可…

20230112编译AIO-3568J的Buildroot(rk356x_linux_release_v1.3.0b_20221213)

20230112编译AIO-3568J的Buildroot&#xff08;rk356x_linux_release_v1.3.0b_20221213&#xff09; 2023/1/12 20:40 当前可以拿到的Buildroot的SDK&#xff1b; rk356x_linux_release_v1.0.0_20210511_split_dir rk356x_linux_release_v1.2.0_20211019_split_dir rk356x_linu…

Ventoy主题美化,以及自行制作方法

Ventoy是基于grub2 所制作的&#xff0c;所以可以自行制作或者将现成的主题套用到Ventoy 方法一&#xff1a; 主题下载地址 上面是两个可以直接使用的Ventoy主题地址&#xff0c;然后下载下来解压文件&#xff0c;我们可以得到 接着往下走&#xff0c;我们可以的得到 现在我们…

Oracle Apex低码平台-定制验证方案

Oracle Apex低码平台-定制验证方案 0 APEX简介&#xff1a; Oracle APEX 是一个低代码开发平台&#xff0c;您可以在该平台上构建可扩展的安全企业应用程序。这些应用程序具有先进的功能&#xff0c;而且可以在任何地方部署。 构建企业应用速度提高 20 倍&#xff0c;代码减…

Dubbo服务降级

Dubbo服务降级 1. 为什么需要服务降级 RPC 是解决分布式系统通信问题的一大利器&#xff0c;而分布式系统的一大特点就是高并发&#xff0c;所以说 RPC 也会面临高并发的场景。在这样的情况下&#xff0c;我们提供服务的每个服务节点就都可能由于访问量过大而引起一系列的问题…