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

news2024/11/18 7:41:54

题目描述:

在这里插入图片描述

主要思路:

利用二分答案的思想进行求解。
首先遍历到最底下的最左结点,然后可以得到一个答案范围,然后二分求解验证即可。
具体细节见代码。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    bool find(int x,int level,TreeNode* root)
    {
        int bits=1<<(level-1);
        while(root&&bits>0)
        {
            if(x&bits)
                root=root->right;
            else
                root=root->left;
            bits>>=1;
        }
        return root!=nullptr;
    }
    int countNodes(TreeNode* root) {
        if(!root)
            return 0;
        int level=0;
        TreeNode * node=root;
        while(root->left)
        {
            root=root->left;
            level+=1;
        }
        int l=1<<level,r=(1<<(level+1))-1;
        root=node;
        while(l<r)
        {
            int mid=(l+r+1)>>1;
            if(find(mid,level,root))
                l=mid;
            else
                r=mid-1;
        }
        return l;
    }
};

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

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

相关文章

工程安全监测无线振弦采集仪在建筑物的应用

工程安全监测无线振弦采集仪在建筑物的应用 工程安全监测无线振弦采集仪是一种先进的监测设备&#xff0c;可以在建筑物、桥梁、隧道、大坝等工程施工或运营中进行振动监测和安全评估。其在建筑物的应用主要是针对建筑物结构的振动和变形进行监测和分析&#xff0c;以确保建筑…

java抽象类中的静态方法

Java的抽象类中可以包含静态方法&#xff0c;即类方法。尽管抽象类不能实例化&#xff0c;但抽象类中的静态方法是可以用抽象类直接调用的。 下面的代码示例定义了一个抽象类AbstractDemo &#xff0c;其中包含一个抽象方法method&#xff0c;一个public静态方法showMessage。…

人工智能系统架构-应用架构

一、架构图 上图架构一个C/S架构 智能终端&#xff08;C&#xff09;包括智能音箱、人脸识别、人脸支付等应用和智能操作系统。 人工智能大脑&#xff08;S&#xff09;构成包括智能云平台、大数据平台&#xff0c;机器学习、深度学习&#xff0c;语音识别模型、图像识别模型和…

CentOS 设置系统字符集,显示为中文

环境&#xff1a; centos 背景&#xff1a; 使用vim打开含有中文的文件&#xff0c;中文显示为乱码。 1、 查看系统当前所用的字符集 locale 2、 安装字符集 查看系统当前安装的所有字符集中有没有 zh_CN.utf8 字符集 locale -a |grep zh_CN.utf8 假如没有&#xff0…

Linux 内存清理

1.查看内存使用情况 free -h 2.内存清理命令 清理PageCache缓存 sudo sync && echo 1 > /proc/sys/vm/drop_caches 清理dentries和inodes缓存 sudo sync && echo 2 > /proc/sys/vm/drop_caches 清理PageCache、dentries和inodes缓存 sudo sync &…

Sentieon | 每周文献-Tumor Sequencing-第三期

肿瘤测序系列文章-1 标题&#xff08;英文&#xff09;&#xff1a;The relationship between genetic characteristics and clinical characteristics and the efficacy of 131 I therapy in children and adolescents with locally advanced or metastatic differentiated th…

栈的简介与实现(Java)

一、简介 栈 (Stack) 只允许在有序的线性数据集合的一端&#xff08;称为栈顶 top&#xff09;进行加入数据&#xff08;push&#xff09;和移除数据&#xff08;pop&#xff09;。因而按照 后进先出 一般作用于深度搜索 假设堆栈中有n个元素。 访问&#xff1a;O&#xff08…

一文学会Python安装和基础语法-全程干货

安装Python程序 官网Python下载地址&#xff1a;Python Releases for Windows | Python.org 安装3.7版本即可&#xff0c;版本升级可能会有较小的改动&#xff0c;下面要学习的都以python3.7为例 下载安装包之后直接双击无脑安装即可 新手经常遇到的问题&#xff1a; 1.符号…

基于VUE框架的旅游平台-计算机毕设 附源码82070

基于VUE框架的旅游平台 摘 要 改革开放以来&#xff0c;我国的旅游业有了非常迅速的发展&#xff0c;但是比较而言&#xff0c;我国国内旅游业发展的广度深度都远远不能适应经济发展和人民生活水平提高的需要。随着市场经济的发展和人民收入水平的进一步提高&#xff0c;人民对…

『Vue组件』全局注册与局部注册及组件命名

一、组件注册的方式 在Vue中组件的注册一般可以分为两种方式&#xff0c;你可以在main.ts或globalComponents.ts等统一管理文件中对公共组件进行注册。也可以在父组件中引入组件并在components属性中对组件进行按需注册&#xff08;OptionsAPI&#xff09;&#xff0c;这样便可…

漏洞复现 飞视美 视频会议系统 Struts2 远程命令执行漏洞

0x01 阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&…

Grafana任意文件读取漏洞(CVE-2021-43798)

Grafana任意文件读取漏洞&#xff08;CVE-2021-43798&#xff09; 一、漏洞描述 Grafana是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后&#xff0c;Grafana可以在网络浏览器里显示数据图表和警告。 二、漏洞影响范围 影响版本&#xff1a; Gr…

antv-g6—在vue项目中实现网格拓扑流程图自定义绘制

实现效果图 这个是自己写着玩的&#xff0c;利用antv/g6自定义绘制流程图&#xff0c;然后保存到localstorage中&#xff0c;在左侧表格展示&#xff0c;还可以通过表格操作来查看对应的流程图以及删除&#xff1b; 这里特别注意一下&#xff0c;antv/g6版本是1.2.8&#xff0…

ModaHub魔搭社区:向量数据库MIlvus服务端配置(二)

目录 storage 区域 wal 区域 cache 区域 storage 区域 | 参数 | 说明 | 类型 | 默认值 | | ——————————————- | —————————————————————————————— | ——————————————————————————————- | ————…

解决 mac 系统报zsh: command not found: npm 问题

文章目录 1、报错zsh: command not found: npm2、解决办法 1、报错zsh: command not found: npm 根据提示&#xff1a;zsh: command not found: npm。说明没有找到 npm 命令&#xff0c;这说明有两种情况&#xff1a; 一是&#xff1a;你根本就没有安装 nodejs 的环境&#xf…

git add 时报错 warning: in the working copy of ‘package-lock.json‘, LF will...

问题&#xff1a; 执行git add . 时报错 原因&#xff1a; 换行符的问题&#xff0c; Windows下换行符和Unix下的换行符不一样&#xff0c;git会自动转换。 解决办法&#xff1a; 执行命令&#xff1a; git config --global core.autocrlf false 问题解决&#xff1a;

Windows网络服务综测刷题

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 前言 本章将会讲解Windows网络服务的刷题 一.刷题 在Windows Server 2016系统中&#xf…

【openpyxl】总结最近使用到的openpyxl方法

这里写自定义目录标题 单元格嵌入图片调节行高和列宽合并单元格自动换行按列插入数据tableWidget数据导出到excel 单元格嵌入图片 from openpyxl.drawing.image import Image from openpyxl.drawing.spreadsheet_drawing import AnchorMarker, TwoCellAnchor from openpyxl.wor…

Excel / PPT 办公技巧

Excel sum求和 我们先选中某个单元格单元格&#xff0c;并在编辑栏输入&#xff1a;SUM&#xff08;&#xff09;&#xff0c;然后输入函数参数&#xff1a;B2&#xff1a;B9&#xff0c;最后按回车键结束确认&#xff0c;即可计算出销量总和&#xff1b; PPT 组合 选中需要…

2023-01-09 DBeaver链接postgresql.md

DBeaver连接postgresql 驱动不存在 Maven artifact maven:/net.postgis:postgis-jdbc:RELEASE not found 解决方法&#xff1a;窗口--->首选项--->驱动--->Maven http://maven.aliyun.com/nexus/content/groups/public/