力扣labuladong一刷day40天计算完全二叉树节点数

力扣labuladong一刷day40天计算完全二叉树节点数

一、222. 完全二叉树的节点个数

题目链接:https://leetcode.cn/problems/count-complete-tree-nodes/
思路:计算完全二叉树直接全遍历的话很浪费时间,但是可以利用完全二叉树的特性来解题, 每到一个节点我们就计算它的left = node.left深度,和right=node.right的深度,如果这两个深度想等,总节点的个数就是2的h次方-1,如果不相等那就把当前节点计数,然后递归左右子树执行上面的,每次左右子树都会有一个可以大化小,小化无。

class Solution {public int countNodes(TreeNode root) {if (root == null) return 0;TreeNode l = root, r = root;int a = 0, b = 0;while (l != null) {l = l.left;a++;}while (r != null) {r = r.right;b++;}if (a == b) {return (int)Math.pow(2, a) - 1;}return 1 + countNodes(root.left) + countNodes(root.right);}
}

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

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

相关文章

vue 图片等比例缩放上传

需求:上传图片之前按比例缩小图片分辨率,宽高不超过1920不处理图片,宽高超过1920则缩小图片分辨率,如果是一张图片请参考这篇博客:js实现图片压缩、分辨率等比例缩放 我根据这篇博主的分享,写下了我的循环上…

HarmonyOS使用Web组件

Web组件的使用 1 概述 相信大家都遇到过这样的场景,有时候我们点击应用的页面,会跳转到一个类似浏览器加载的页面,加载完成后,才显示这个页面的具体内容,这个加载和显示网页的过程通常都是浏览器的任务。 ArkUI为我…

chatGPT 国内版,嵌入midjourney AI创作工具

聊天GPT国内入口,免切网直达,可直接多语言对话,操作简单,无需复杂注册,智能高效,即刻使用.可以用作个人助理,学习助理,智能创作、新媒体文案创作、智能创作等各种应用场景! 地址: https://ai.wboat.cn/

【51单片机系列】直流电机使用

本文是关于直流电机使用的相关介绍。 文章目录 一、直流电机介绍二、ULN2003芯片介绍三、在proteus中仿真实现对电机的驱动 51单片机的应用中,电机控制方面的应用也很多。在学习直流电机(PWM)之前,先使用GPIO控制电机的正反转和停止。但不能直接使用GPIO…

武汉灰京文化:数字黄金时代,游戏经济的璀璨崛起

在数字化时代的冲击下,游戏行业已经成为一个经济体量巨大的引擎。游戏的销售额和盈利能力呈现出逐年增长的趋势,不仅吸引了大量投资者和研发商,也带动了相关产业的繁荣,构建起一个庞大而完整的游戏生态系统。 游戏市场的繁荣是游…

AcWing 3709:单链表节点交换 ← 四川大学考研机试题

【题目来源】 https://www.acwing.com/problem/content/3712/【题目描述】 输入一个单链表,依次交换前2个数,第3、4个数,第5、6个数,…,以此类推,直到操作完整个链表。 如果链表长度是奇数,则最…

06 python 文件基础操作

6.1 .1文件读取操作 演示对文件的读取 # 打开文件 import timef open(02_word.txt, r, encoding"UTF-8") print(type(f))# #读取文件 - read() # print(f读取10个字节的结果{f.read(10)}) # print(f读取全部字节的结果{f.read()})# #读取文件 - readLines() # lines…

面试官:说说你对 linux 用户管理的理解?相关的命令有哪些?

面试官:说说你对 linux 用户管理的理解?相关的命令有哪些? 一、是什么 Linux是一个多用户的系统,允许使用者在系统上通过规划不同类型、不同层级的用户,并公平地分配系统资源与工作环境 而与 Windows 系统最大的不同…

基于MyBatis二级缓存深入装饰器模式

视频地址 学习文档 文章目录 一、示意代码二、装饰器三、经典案例—MyBatis二级缓存1、Cache 标准定义2、PerpetualCache 基础实现3、增强实现3-1、ScheduledCache3-2、LruCache 先来说说我对装饰器理解:当你有一个基础功能的代码,但你想在不改变原来代…

高效营销系统集成:百度营销的API无代码解决方案,提升电商与广告效率

百度营销API连接:构建无代码开发的高效集成体系 在数字营销的高速发展时代,企业追求的是快速响应市场的能力以及提高用户运营的效率。百度营销API连接正是为此而生,它通过无代码开发的方式,实现了电商平台、营销系统和CRM的一站式…

墒情监测FDS-400 土壤温湿电导率盐分传感器

墒情监测FDS-400 土壤温湿电导率盐分传感器产品概述 土壤温度部分是由精密铂电阻和高精度变送器两部分组成。变送器部分由电源模块、温度传感模块、变送模块、温度补偿模块及数据处理模块等组成,解决铂电阻因自身特点导入的测量误差,变送器内有零漂电路…

前端开发中requestAnimationFrame和setInterval、setTimeout的介绍和优缺点对比

一、requestAnimationFrame() requestAnimationFrame是一种在浏览器中实现动画循环的技术,它通过定时器机制来周期性地调用指定的回调函数,以实现网页动画的效果。与传统的setInterval和setTimeout不同,requestAnimationFrame具有更好的浏览…

Redis队列原理解析:让你的应用程序运行更加稳定!

一、消息队列简介 消息队列(Message Queue),字面意思就是存放消息的队列。最简单的消息队列模型包括 3 个角色: 消息队列:存储和管理消息,也被称为消息代理(Message Broker)生产者…

Json格式化

Json格式化 大家好,我是微赚淘客机器人的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! Json格式化:让数据更亮眼,解密Json的奇妙世界 在现代Web开发中,Json(JavaScript Object N…

Turtle绘制菱形-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第16讲。 Turtle绘制菱形&a…

六.聚合函数

聚合函数 1.什么是聚合函数1.1AVG和SUM函数1.2MIN和MAX函数1.3COUNT函数 2.GROUP BY2.1基本使用2.2使用多个列分组2.3GROUP BY中使用WITH ROLLUP 3.HAVING3.1基本使用3.2WHERE和HAVING的区别 4.SELECT的执行过程4.1查询的结构4.2SELECT执行顺序4.3SQL执行原理 1.什么是聚合函数…

pip的常见60条基本命令和使用详解

pip是Python的包管理工具,用于安装、升级和卸载Python包。以下是pip的常见基本命令和使用详解: 1. 安装包:pip install package_name 该命令用于安装指定的Python包。例如,要安装名为xlwt的包,可以运行命令"pip i…

用友 U8总账凭证打印设置

总账--凭证打印——设置 是设置凭证打印显示的格子框,勾上就有框,去掉就没有框。

多家安全设备存在远程命令执行漏洞复现 [附POC]

文章目录 多家安全设备(防火墙产品)存在远程命令执行漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响产品0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现多家安全设备(防火墙产品)存在远程命令执行漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相…

xcode-文件

IOSDeviceSupoprt 共享缓存库 当你使用新的 iOS 设备连接到 Xcode 时,Xcode 会自动下载并存储相应版本的设备支持文件。 每个 iOS 版本都有一个对应的设备支持文件集,这些文件包含有关设备架构和操作系统的信息,以便 Xcode 能够正确地调试和…