LeetCode222 Count Complete Tree Nodes

【LeetCode】222.完全二叉树的节点数 LeetCode 第222题 阅读详情
题目链接:

https://leetcode.com/problems/count-complete-tree-nodes/

题目描述:

求一个完全二叉树的节点个数。

题目分析:

需要注意的是遍历的方式求解节点个数会超时,时间复杂度为O(n)。利用完全二叉树与满二叉树节点个数的特性。满二叉树的节点个数为2^h-1,h为树高。先判断该完全二叉树是不是满二叉树,如果是直接返回结果,如果不是再递归求解。

如果节点左子树最左边的深度,与节点右子树最右边的深度相等,则以该节点为根节点的树是满二叉树,如果不等,则以该节点为根节点的树的节点个数=其左子树的节点个数+其右子树的节点个数+本身。

代码:
class Solution {
public:
    int countNodes(TreeNode* root) {
        if(root==NULL){
            return 0;
        }
        int leftHgt=1;
        int rightHgt=1;
        TreeNode* ptr=NULL;
        ptr=root->left;
        while(ptr!=NULL){
            leftHgt++;
            ptr=ptr->left;
        }
        ptr=root->right;
        while(ptr!=NULL){
            rightHgt++;
            ptr=ptr->right;
        }
        if(leftHgt==rightHgt){
            return (1<<leftHgt)-1;
        }
        else{
            return countNodes(root->left)+countNodes(root->right)+1;
        }
    }
};
PyQt5开发编译器安装(PyCharm安装) PyCharm 提供了最完整的 PyQt5 开发体验,特别是其集成的调试工具和 Qt Designer 支持,能显著提高开发效率。是最受欢迎和功能最完整的 IDE。它专门为 Python 开发优化,对 PyQt5 有很好的支持。右键运行该文件,如果出现窗口说明配置成功。对于 PyQt5 开发, 阅读详情

相关推荐

惊呆了!Oracle 11g从入门到放弃的保姆级指南(新手必看)

本文为Oracle 11g数据库新手提供了一份详尽的入门指南。内容涵盖从安装配置、SQL*Plus工具使用、核心的SQL增删改查操作,到事务、索引等进阶概念的解析。文章旨在帮助初学者避开常见陷阱,快速掌握这一经典关系型数据库管理系统的基本操作与核心技能,实现从入门到上手。

ooo22的博客 265

LeetCode222. 完全二叉树的节点个数(二分查找+二进制表示路径法)

本篇博客主要详细介绍 LeetCode222.完全二叉树的节点个数的多种解法(广度/深度优先遍历、二分法+二进制表示路径法)

weixin_42307601的博客 986

5分钟搞定Nano-Banana图片编辑API对接:从Base64编码到生成图片全流程

本文详细介绍了如何快速对接Nano-Banana图片编辑API,基于gemini-2.5-flash-image-preview模型,从环境准备、Base64编码到API调用的全流程。通过实战示例和优化技巧,帮助开发者高效集成AI图片处理能力,提升产品竞争力。

dog123的博客 259

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

题目 给出一个完全二叉树,求出该树的节点个数。 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~个节点。 示例: 输入: 1 / \ 2 3 / \ / 4 5 6 输出: 6 解题思路 方法一:二分查找 + 位运算 对于任意二叉树,都可以通过广度优先搜索或深度优先搜索计算节点个数,时间复杂度和空间复杂度都...

jiiiiiaaaa的博客 618

深入解析USBlyzer抓包工具:从设备描述符到数据交互实战

本文深入解析了USBlyzer抓包工具在USB协议分析中的应用。从设备描述符的抓取与解读,到设置地址、配置描述符的实战分析,再到数据交互阶段的抓包技巧,文章通过具体案例详细展示了如何使用USBlyzer透视USB总线通信,是排查设备驱动问题、逆向分析通信协议和学习USB规范的实用指南。

weixin_29171087的博客 741

CISP-PTE考前实操练习题

CISP-PTE考前学习练习题目,渗透测试功工程师

2301_79546223的博客 1996

【leetcode】222.完全二叉树的节点个数

【leetcode】222.完全二叉树的节点个数题目思路一、遍历递归法二、迭代层序遍历三、公式+递归代码一、遍历递归法二、迭代层序遍历三、公式+递归 题目 leetcode原题链接 Q给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例 1: 输入:root = [1,2,3,4,

laplacepoisson的博客 441

【Macbook-Latex安装部署教程】【Win-Texlive镜像下载】【简单易上手】MacTex+Vscode/Texstudio

该教程记录自己在mac()上安装部署Latex环境的经验,整个教程操作简单,配置要求少,易上手。教程分成三部分:Mactex下载与安装,Vscode插件下载与配置文件修改,Texstudio安装。

sunriseOvO的博客 2568

【经典算法】LeetCode 222. 完全二叉树的节点个数(Java/C/Python3实现含注释说明,Easy)

方式优点缺点时间复杂度空间复杂度方式一(层次遍历)直观易懂,不依赖特殊性质代码量较大,需要额外的空间存储队列O(N)O(N)(队列空间)方式二(二分查找+递归)利用完全二叉树的性质,平均性能较好递归调用栈可能较深,最坏情况下时间复杂度较高O(N log N)O(H)(H为树的高度,通常小于N)

1566

SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明

SE-0526激光避障雷达扫描传感器广泛应用于原材料运输与处理、移动装配、托盘或货架运输、产成品自动运输、生产线自动对接,餐厅自助送餐等AGV小车、服务机器人、仓储机器人、无人叉车导航、避障、定位等。 本文重点介绍SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明。

华翔天诚科技 2693

基于Matlab的MIMO通信系统仿真_Simulink实现

瑞利衰落信道中使用空时分组码的BPSK调制的BER 1、2发1收 参数设置: 双极性信号元+1和-1,每符号含1bit; 采样时间=符号时间=1s; 采用基于数据帧的仿真计算模式,每帧中有2个采样值; 仿真时间=出现100个误码后停止仿真; 随机整数种子=22; Jakes衰落模型中每个信道上的多普勒频移=0.01Hz; 输人信号功率=2W; Alamouti码:两根发送天线,一根接收天线(分集阶= 2); 平均信道信噪比= 18dB; 仿真得出的误码率统计BER =0. 00017. 2、2发

太阳帅帅的博客 9688

leetcode 222: Count Complete Tree Nodes

leetcode 222: Count Complete Tree Nodes c++ java python

西施豆腐渣 1万+

C# 开发 WPS 插件实战:从环境搭建到功能实现(附完整代码)

本文提供了一份详尽的C#开发WPS插件实战指南,涵盖从环境搭建到功能实现的完整流程。通过COM技术,开发者可以创建自定义插件,为WPS Office扩展自动化功能,如文档处理与格式转换。文章包含核心概念解析、Ribbon界面集成、调试部署方法及完整代码示例,帮助开发者快速上手。

rust6ferris的博客 927

闯关leetcode——222. Count Complete Tree Nodes

一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。假设完全二叉树是h深度,则其h-1深度层是满二叉树。h层元素全部靠左侧分布,即不存在“只有右节点,而无左节点”的情况。我们的解题思路就是:先找到满二叉树层的深度(不停遍历右子树),然后统计最后一层叶子节点数(先序遍历)。除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。完全二叉树是由满二叉树发展而来。

方亮的专栏 1077

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LeetCode 222 Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes. In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the

Tech in Pieces 425

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

leetcode 222. Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes. Note: Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as po

天使之翼 376

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

leetcode222. Count Complete Tree Nodes

记录这道题的目的主要是想复习一下计算时间复杂度的方法。题目描述是这样的: Given a complete binary tree, count the number of nodes.Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibl

写代码的柯长的博客 404

LeetCode222——Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is completely fille

代码菌的blog 1923

Leetcode 222. Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is completely filled,

无名山丘,崛起成峰 1165

leetcode[222] Count Complete Tree Nodes

Given acompletebinary tree, count the number of nodes. Note: Definition of a complete binary tree fromWikipedia:In a complete binary tree every level, except possibly the last, is completely ...

weixin_30270889的博客 81

[LeetCode 222]Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is completely fille

coder 进阶的专栏 570

[leetcode 222]Count Complete Tree Nodes

Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is completely fille

ER_Plough的专栏 584

LeetCode 222. Count Complete Tree Nodes

LeetCode 222. Count Complete Tree Nodes (Easy);主要知识点:tree;优先级:5

温迪今天刷题了吗 291

【leetcode】222. Count Complete Tree Nodes

题目: 思路: 如果是满二叉树,2h−12^{h}-12h−1直接出答案。(这一步的优化可以稍微提高一下效率) 如果是不是满二叉树,笨办法,逐个计算吧。 代码实现: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr),

zxc120389574的博客 155

[leetcode] 222. Count Complete Tree Nodes

Description Given a complete binary tree, count the number of nodes. Note: Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is comp...

Learning from the mistakes 221
上一篇: LeetCode129 Sum Root to Leaf Numbers
下一篇: LeetCode106 Construct Binary Tree from Inorder and Postorder Traversal
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值