【LeetCode】222. 完全二叉树的个数

news2024/11/26 9:47:14

什么是计算机基础?如果本题能够用二分+二进制+二叉树的方式解出本题,那么我可以认为你的计算机基础就很好了。很久以来,我一直认为自己的计算机基础好,但是自刷题以来,跟网上这么多优秀的同学相比,我发现我实在是弱爆了。所以请认认真真地提升自己的专业能力吧!

1. 题目在这里插入图片描述

这是一道好题!

2. 分析

这道题有很多种写法。先说简单的,用递归的方式求解一棵二叉树有多少节点。

2.1 递归求解

使用递归的方法找出当前节点的左子树节点个数,右子树节点个数,那么以当前节点为根的节点个数就求出来了。很显然,这是一个可以使用递归求解的题。复杂度为O(n)

2.2 二分法+树特性+位运算

第二种方法则稍显进阶了。在我为我的秒杀此题而沾沾自喜时,发现竟然还有只需要O(logn * logn)复杂度的算法。

我们都知道 一个正数可以由一棵二叉树可以完整表示, 比如:数字6的二进制位就是110。
在这里插入图片描述

3. 代码


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

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

相关文章

vxe-grid 实现配置式form搜索条件 form搜索条件框可折叠 配置式table

文章目录 效果图代码 效果图 代码 <template><div class"app-container"><vxe-grid refxGrid v-bind"gridOptions" v-if"tableHeight" :height"tableHeight"><template #billDate"{ data }"><e…

FPGA实验5:4位加法计数器

实验目的及要求 掌握时钟信号、进程和BUFFER端口的运用&#xff1b;了解计数器的设计、仿真和硬件测试&#xff0c;进一步熟悉VHDL语句、语法及应用等。 实验原理 运用Quartus II 集成环境下的VHDL文本设计方法设计4位加法计数器&#xff0c;进行波形仿真和分析、引脚分配…

【Apache Doris】周FAQ集锦:第 15 期

【Apache Doris】周FAQ集锦&#xff1a;第 15 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户…

从数据湖到湖仓一体:统一数据架构演进之路

文章目录 一、前言二、什么是湖仓一体&#xff1f;起源概述 三、为什么要构建湖仓一体&#xff1f;1. 成本角度2. 技术角度 四、湖仓一体实践过程阶段一&#xff1a;摸索阶段(仓、湖并行建设)阶段二&#xff1a;发展阶段方式一、湖上建仓(湖在下、仓在上)方式二&#xff1a;仓外…

一种优雅的方法获取PyInstaller打包Python程序的资源路径和目录路径

1、需求分析 运行Python程序的时候需要获取的资源有2种&#xff1a; 一种是固定的资源文件&#xff0c;你希望启动程序的时候可以调用的&#xff0c;比如数据库文件和图片资源文件&#xff1b;另一种是用于存储历史记录的文件&#xff0c;你希望每次打开都会改变其中的内容&am…

【机器学习】智能驱动未来:机器学习在能源效率提升与环境管理中的创新应用

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习能源环境领域的应用潜力&#x1f304;能源效率提升&#x1f3de;️环境管理⛰️具体案例…

动漫风格动漫404网站维护HTML源码

源码介绍 动漫风格动漫404网站维护HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 效果预览 源码下载 动漫风格动漫404网站维护HTML源码

收银系统源码-千呼新零售收银视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

XMl基本操作

引言 使⽤Mybatis的注解⽅式&#xff0c;主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能&#xff0c;建议使⽤XML来配置映射语句&#xff0c;也就是将SQL语句写在XML配置⽂件中. 之前&#xff0c;我们学习了&#xff0c;用注解的方式来实现MyBatis 接下来我们…

传输层和网络层的关系,ip协议+ip地址+ip报头字段介绍(4位TOP字段,8位生存时间(ttl)),ip地址和端口号的作用

目录 传输层和网络层的关系 引入 介绍 ip协议 介绍 ip地址 引入 数据传递过程 举例(ip地址的作用) ip报头 格式 4位版本号 ip地址不足的问题 8位服务类型 4位TOP(type of service)字段 最小延时 最大吞吐量 4位首部长度 16位总长度 8位协议号 首部校验和…

科研绘图系列:R语言分割小提琴图(Split-violin)

介绍 分割小提琴图(Split-violin plot)是一种数据可视化工具,它结合了小提琴图(violin plot)和箱线图(box plot)的特点。小提琴图是一种展示数据分布的图形,它通过在箱线图的两侧添加曲线来表示数据的密度分布,曲线的宽度表示数据点的密度。而分割小提琴图则是将小提…

LeNet实验 四分类 与 四分类变为多个二分类

目录 1. 划分二分类 2. 训练独立的二分类模型 3. 二分类预测结果代码 4. 二分类预测结果 5 改进训练模型 6 优化后 预测结果代码 7 优化后预测结果 8 训练四分类模型 9 预测结果代码 10 四分类结果识别 1. 划分二分类 可以根据不同的类别进行多个划分&#xff0c;以…

【数据分享】2013-2022年我国省市县三级的逐月SO2数据(excel\shp格式\免费获取)

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们给大家分享了2000——2022年的省市县三级的逐月PM2.5数据和2013-2022年的省市县三级的逐月CO数据&#xff08;均可查看之前的文章获悉详情&#xff09;&#xff01; 本次我们分享的是我国2013——2022年的省…

Langchain-Chatchat-Ubuntu服务器本地安装部署笔记

Langchain-Chatchat&#xff08;原Langchain-ChatGLM&#xff09;基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain。 开源网址&#xff1a;https:…

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS 1. RoMe1.1 Mesh Initialization / Waypoint Sampling1.2 Optimization1.3 Experiments 2. EMIE-MAP2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding2.2 Optimizing Strategies2.3 Experimen…

基于面向对象和递归的拦截器设计模式

1 定义 拦截器模式&#xff08;Interceptor Pattern&#xff09;&#xff0c;是指提供一种通用的扩展机制&#xff0c;可以在业务操作前后提供一些切面的&#xff08;Cross-Cutting&#xff09;的操作。这些切面操作通常是和业务无关的&#xff0c;比如日志记录、性能统计、安…

SciPy版本与Python和NumPy各个版本的兼容性

但是现在我用Scipy1.13.1&#xff0c;Python3.10&#xff0c;NumPy2.0.0&#xff0c;使用Scipy时会报错&#xff0c;将NumPy 版本降低为1.26.4以后&#xff0c;就没有报错了。

C++ | Leetcode C++题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:int missingNumber(vector<int>& nums) {int n nums.size();int total n * (n 1) / 2;int arrSum 0;for (int i 0; i < n; i) {arrSum nums[i];}return total - arrSum;} };

【MySQL】一些业务场景常见的查询,比如实现多表字段同步,递归查询等

目录 快速加注释多表关联查询更新多个字段循环查询子级方法1&#xff1a;递归查询方法2&#xff1a;循环查询 快速加注释 使用ALTER TABLE语句可以修改表结构&#xff0c;包括添加注释。以下是添加注释的语法&#xff1a; ALTER TABLE 表名 MODIFY COLUMN 列名 列类型 COMMEN…

【开源库学习】libodb库学习(三)

4 查询数据库 如果我们不知道我们正在寻找的对象的标识符&#xff0c;我们可以使用查询在数据库中搜索符合特定条件的对象。ODB查询功能是可选的&#xff0c;我们需要使用--generate-query ODB编译器选项显式请求生成必要的数据库支持代码。 ODB提供了一个灵活的查询API&#x…