Day40 代码随想录打卡|二叉树篇---完全二叉树的节点个数

题目(leecode T222):

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

方法:
层序遍历法:
完全二叉树指的是一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。要计算其中的节点的个数,使用层序遍历非常的容易,昨天的题目是计算深度,计算深度我们是在每一层的遍历结束之后给depth++,而计算节点的话我们就需要在处理每一个节点的时候就进行result++的操作。因此由层序遍历修改而来非常的容易。只需要在处理节点出队的语句后增加一个节点个数result++的语句即可。

class Solution {
public:
    int countNodes(TreeNode* root) {
        if(root == NULL) return 0;
        queue<TreeNode*> que;
        que.push(root);
        int result = 0;
        while(!que.empty()){
            int size = que.size();
            for(int i = 0; i<size; i++){
                TreeNode* node = que.front();
                que.pop();
                result++;                              //在这里计算节点个数
                if(node->left) que.push(node->left);
                if(node->right) que.push(node->right);
            }
        }
        return result;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Vue]处理一进入页面数据未获取到时的警告

当页面一进入页面就需要展示后台数据时&#xff0c;控制台会类似于报如下的警告 原本的写法如下,我原以为做了 || 0 的处理以后就就可以避免这个问题&#xff0c;但是由于是取的对象里面的属性&#xff0c;所以还是会报错。PS&#xff1a;基本类型的数据可以这样处理。 <top…

SpringCloud-OpenFeign

一 OpenFeign是什么?有什么用? 以往我们是通过 RestTemplate 发起远程调用&#xff0c;如下: 存在问题如下&#xff1a; 代码可读性差&#xff0c;编程体验不统一参数复杂URL难以维护 Feign 是一个声明式的 http 客户端&#xff0c;其作用就是用来把我们解决上述问题的~ 二…

【原创】springboot+mysql校园通讯录管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

TCP协议详解及其相关的10个核心机制(面试重点)

TCP协议的报文格式 TCP协议有连接&#xff0c;可靠性传输&#xff0c;面向字节流&#xff0c;全双工。 他的数据格式如图&#xff1a; 根据他的数据格式&#xff0c;在这里我们只知道 16位源端口号&#xff08;表示客户端这里的端口号&#xff09;&#xff0c;16位目的端口号&…

【微服务】docker部署redis,一主二从三哨兵,读写分离

配置redis读写分离 3台虚拟机 创建目录用于挂载 mkdir -p /root/redis/{conf,data,logs} #master配置文件 bind 0.0.0.0 //任何ip都能访问 port 6379 //redis端口号 logfile "/data/redis.log" //日志文件存放位置&#xff0c;启动redis之前设置为空&#xff…

资深开发推荐的IDEA 插件

开发如虎添翼 工欲善其事&#xff0c;必先利其器。想要提升编程开发效率&#xff0c;必须选择一款顺手的开发工具&#xff0c;插件不在多&#xff0c;而在精&#xff0c;作为从业10年的程序员&#xff0c;我目前用到这十几个插件&#xff0c;在平时开发&#xff0c;代码review…

OpenCv之简单的人脸识别项目(登录页面)

人脸识别 一、项目准备二、登录页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件 3.运行脚本3.1定义识别脚本3.2定义提取脚本3.3定义标注脚本3.4定义人脸比对脚本3.5定义动态处理脚本3.6定义属性判断脚本 4.创建一个退出…

微信小程序 自定义 tabBar

自定义 tabBar | 微信开放文档 本文案例使用的Taro 非原生微信小程序 使用流程 1. 配置信息 在 app.json 中的 tabBar 项指定 custom 字段&#xff0c;同时其余 tabBar 相关配置也补充完整。所有 tab 页的 json 里需声明 usingComponents 项&#xff0c;也可以在 app.json 全局…

[已解决]FinalShell连接CentOS失败:java.net.UnknownHostException: centos

报错&#xff1a; 解决办法&#xff1a; 1.查看Windows:C:\Windows\System32\drivers\etc\ 2.拷贝hosts文件&#xff0c;用记事本打开hosts文件 3.添加主机名centos及对应IP地址&#xff0c;保存并粘贴覆盖C:\Windows\System32\drivers\etc\中的hosts文件 4.打开cmd命令窗口输…

发成绩的小程序怎么做?

成绩的发布和管理一直是老师和家长共同关心的问题。传统的成绩发布方式往往存在效率低下、信息泄露风险等问题。有没有一种既安全又高效的解决方案呢&#xff1f; 易查分为成绩查询提供了一个理想的平台。不需要下载安装&#xff0c;用户只需通过在线查询的方式即可快速访问&am…

小程序内使用路由

一:使用组件 1)创建组件 2)在需要的页面的json/app.json可实现局部使用和全局使用 在局部的话,对象内第一层,window配置也是第一层,而在全局配置也是在第一层,window在window对象内.第二层.内部执行遍历不一样. 3)页面使用 上述所写可实现在页面内使用组件.效果是页面内可以将…

HTML5的标签(文本链接、图片路径详解)

目录 前言 一、文本链接 超链接表述 二、图片路径详解 绝对路径 相对路径 网络路径 前言 一、文本链接 超链接表述 HTML 使用标签<a>来设置超文本链接 超链接可以是一个字&#xff0c;一个词&#xff0c;或者一组词&#xff0c;也可以是一幅图像&#xff0c;…

vscode编辑器创建分支注意事项?!

最近在公司开发项目时&#xff0c;不小心将自己分支的东西提交到公司的master的分支&#xff0c;大家看看是什么情况&#xff1f; 先上图&#xff1a; 从图上看&#xff0c;我这边用了GITLENS这个插件&#xff0c;在创建分支时&#xff0c;有个create branch from&#xff0c;有…

Windows 权限维持之 Shift 后门

正常情况下我们连按五次 shift 键会弹出粘滞键 粘滞键是电脑使用中的一种快捷键&#xff0c;一般连按五次 shift 会出现粘滞键提示&#xff0c;粘滞键是专为同时按下两个或多个键有困难的人而设计的&#xff0c; 粘滞键开启后&#xff0c;可以先按一个键位&#xff0c;再按另一…

如何识别并选择正规、优质的外汇交易平台?

外汇市场的日益繁荣吸引了越来越多的投资者&#xff0c;但同时也带来了众多外汇平台的涌现。如何在这些平台中筛选出正规、可信的平台&#xff0c;成为了每位外汇交易者必须面对的首要问题。以下&#xff0c;我们将为您揭示如何鉴别外汇平台真伪的几个关键方法&#xff1a; 首先…

生成 PDF 用 Turborepo 管理,简单的事情复杂化?

最近在做一个生成报告的项目&#xff0c;稍微了解过这方面知识的同学大概都可以想到直接 HTML 写模板&#xff0c;利用 html2canvas jspdf 两个库就可以实现&#xff0c;非常简单。但是为什么我采用 Turborepo 来管理这个项目呢&#xff1f; 有兴趣的同学在看本文前应先了解一…

从了解到掌握 Spark 计算框架(二)RDD

文章目录 RDD 概述RDD 组成RDD 的作用RDD 算子分类RDD 的创建1.从外部数据源读取2.从已有的集合或数组创建3.从已有的 RDD 进行转换 RDD 常用算子大全转换算子行动算子 RDD 算子综合练习RDD 依赖关系窄依赖宽依赖宽窄依赖算子区分 RDD 血统信息血统信息的作用血统信息的组成代码…

部署k8s的DashBoard

1. 部署 Dashboard UI [rootk8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recomme nded.yaml一般上面的网站访问不了 可以下载我上传的资源DashBoard的recommended.yaml vim recommended.yaml 复制粘贴我上…

SQL查询太慢?实战讲解YashanDB SQL调优思路

本文是 Meetup 第十期 “调优实战专场” 的第二篇技术文章&#xff0c;上一篇《高效查询秘诀&#xff0c;解码 YashanDB 优化器分组查询优化手段》中&#xff0c;我们揭秘了 YashanDB 分组查询优化秘诀&#xff0c;本文将通过一个案例&#xff0c;助你快速上手 YashanDB 慢日志…

爱堡集团数智掘金—共绘上市蓝图

&#xff08;本台记者报&#xff09;2024年5月26日爱堡集团在浙江省杭州市上城区瑞莱克斯大酒店隆重召开规模达500人的盛会。这场聚焦智慧与创新的会议&#xff0c;旨在加速爱堡集团的数智化转型进程&#xff0c;并为其上市之路绘制蓝图&#xff0c;吸引了众多行业领袖和媒体的…