完全二叉树学习

2023-05-16

定义:假设高度为h,那么前h-1层都是满的,最后一层,从左向右,连续集中在最左边;k层的完全二叉树总节点个数最小为2^k-1,最大节点个数为2^(k-1)

可以从数组形式存储的方面来考虑,数组形式存储的完全二叉树,如果元素下标为i,那么其左子树在2i+1,右子树在2i+2,父节点在floor((i-1)/2)


如下图所示:

        1       
      /    \     
     2     3    
    /  \      / \   
   4   5  6  7  
  / \    / \       
 8  9 10 11 

这是一颗完全二叉树,如果去掉7、8、9,数组形式的存储约束就被破坏了:

        1       
      /     \     
     2       3    
    / \      /    
   4  5   6     
  / \    /  \       
 8  9 10 11 


         1       
      /      \     
     2      3    
    /  \       / \   
   4   5    6  7  
  /      / \       
 8    10 11


用一个例题来解释:

设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为多少?
(13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为______。() A. 349 B. 350 C. 255 D. 351 
满意回答 B:350
首先你得知道什么叫完全二叉树! 完全二叉树(Complete Binary Tree)   
若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的节点都连续集中在最左边,这就是完全二叉树。   完全二叉树是由满二叉树而引出来的。对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
做这种题目你要知道二叉树的两个特点!第k层的节点个数最多2^(k-1)个,高度为k层的二叉树,最多2^k-1个节点!
则在本题目中,共699个节点,因为是完全二叉树,2^k-1>699>2^(k-1),所以高度为10,可以确定1到9层全满,节点总算为511,剩下的188个肯定为叶子节点!第10层上的188个节点挂在第九层的188/2=94个节点上,则第九层剩下的2^(9-1)-94=162个也为叶子节点,最后总共188+162=350个叶子节点!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

完全二叉树学习 的相关文章

  • linux设备端breakpad程序崩溃日志的捕获与分析

    linux设备端breakpad程序崩溃日志的捕获与分析 目录 linux设备端breakpad程序崩溃日志的捕获与分析说明平台介绍breakpad 的编译PC端的编译与安装交叉编译 breakpad 的使用代码的使用需要使用的文件程序崩溃
  • [转载]槽函数教程

    一 概述 二 信号 三 槽 四 信号和槽的关联 五 元对象工具 六 程式样例 七 应注意的问题 相关资源 作者简介 作者 唐新华 xhsmart 64 263 net 软件工程师 信号和槽作为QT 的核心机制在QT 编程中有着广泛的应用 x
  • 如何在Centos服务器上搭建起Oracle10、VNC、以及FTP

    一 重装和分区 1 配置所需磁盘阵列 xff08 Raid xff09 xff1b 2 正确分区 xff1b 3 Centos安装 xff1a 过于简单 xff0c 请自行bd 二 连网 系统安装完成之后 xff0c 我们需为其分配IP和D
  • cas服务器连接数据库

    进行数据库的连接 xff0c 必须要导入一些必要的包 xff0c 比如数据库驱动 xff0c mysql连接等包 xff0c 这些maven依赖都能在网上找到 1 找到cas overlay template 5 3文件夹下的pom文件 x
  • VirtualBox 桥接模式,虚拟机ping不通宿主机

    按照网上教程设置好虚拟机网络之后 xff0c 怎么都ping不通宿主机 方案一 xff1a 修改防火墙入站规则 打开控制面板 xff0c 找到Windows Defender 防火墙 xff0c 点击高级设置 xff0c 在入站规则里找到核
  • Kuhn-Munkres 算法详细解析

    直接进入正题 xff0c Kuhn Munkres 算法 xff08 下文简称 KM 算法 xff09 是为了高效求解二分图最佳完美匹配问题而生的 xff0c 我们先温习一下几个概念 xff0c 如果你对这几个概念不是很熟悉的话 xff0c
  • maven web项目执行install异常:org.apache.maven.plugin.war.util.WebappStructure

    INFO Packaging webapp INFO ERROR FATAL ERROR INFO INFO Cannot construct org apache maven plugin war util WebappStructure
  • 配置linux主机静态ip和网关

    网上还是百度了比较多 xff0c 具体参考已经记不清楚了 xff0c 也就不写了 不过还是要感谢各位大佬之前的分享 xff0c 还有一些分享了网络知识的 xff0c 有兴趣可以自己百度去看了 这篇只大概记录需要配置哪些东西 xff0c 大概
  • adb命令 提取已安装的apk

    获取包名 通过 adb shell pm 命令 xff0c 可以打印当前手机安装的所有 apk 的包名 adb shell pm list packages 根据包名查找 APK 对应的路径 所有安装完后的apk xff0c 其实都存在手机
  • python 语言基础 - 你不得不知道的字符串常用函数之isalpha

    前言 小伙伴们大家好 xff0c 每天一个小知识 xff0c 一起学python每天进步一点点 不知道小伙伴们在开发的时候有没有遇到这样一种场景 xff0c 有时候一些业务需要 xff0c 想要判断一个字符串是不是由纯字符组成 xff0c
  • python 语言基础 - 你不得不知道的字符串常用函数之isdigit

    前言 小伙伴们大家好 xff0c 每天一个小知识 xff0c 一起学python每天进步一点点 上一篇文章中为大家分享了关于判断字符串是否全都是由字符组成的函数isalpha xff0c 今天要给大家分享的依然是判断字符串组成的函数isdi
  • uni-app,选择器使用

    1 uni app 选择器使用示例 xff1a let view 61 uni createSelectorQuery in this select 34 grade btn 34 view fields size true scrollO
  • CSRF漏洞修复建议

    1 关于CSRF 跨站请求伪造 xff0c xff08 Cross site request forgery xff09 是一种对网站的恶意利用 CSRF作为一种跨网站的攻击方式 xff0c 不同于XSS站内攻击 CSRF是通过伪装成受信任
  • centos6和centos7的防火墙基本命令

    一 centos6 xff1a 1 firewall的基本启动 停止 重启命令 查看防火墙状态 xff1a service iptables status etc init d iptables status centos6启动 停止防火墙
  • django中vue的使用

    转载 xff1a https blog csdn net qq 21389693 article details 105734696 后端使用vue的目的 后端使用vue的目的就是把ajax里面的数据绑定到前端 xff0c 实现动静分离 V
  • centos7更新yum源

    1 centos7安装后 xff0c 默认yum源配置文件位置 xff1a vi etc yum repos d CentOS Media repo 2 下载新的国内yum源 centos自带的是国外yum源 xff0c 下载速度相当慢 换
  • 临时出差宁波随笔

    因公司吉利项目收尾工作 xff0c 需到客户现场施工 主要负责软件项目的质量查验 xff0c 及相关问题修复 一千多公里的路程 xff0c 坐高铁7小时左右 xff0c 真是体验了中国速度 一路由西北而向东南直下 xff0c 抵达舟山群岛附
  • GitHub Copilot

    介绍 GitHub Copilot 是人工智能编程助手 xff0c 它可以帮助你编写程序 在你用visual studio或visual studio code等软件设计工具进行编程时 xff0c 它可以直接给你整行或整个方法的代码提示 x
  • 微信小程序头像昵称填写功能

    自 2022 年 10 月 25 日 24 时后 xff08 以下统称 生效期 xff09 xff0c 用户头像昵称获取规则将进行如下调整 xff1a 自生效期起 xff0c 小程序 wx getUserProfile 接口将被收回 xff
  • mysql 5.7设置数据库大小写敏感

    1 此处讲的是windows环境下的mysql配置 xff0c 小编用的是win10系统 xff1b 2 安装完mysql后 xff0c 数据库默认是大小写不敏感的 xff1b 3 修改my ini文件 xff1a C ProgramDat

随机推荐

  • eclipse 护眼色设置

    1 调整eclipse editor区域背景色 背景颜色向你推荐 xff1a 色调 xff1a 85 饱和度 xff1a 1 2 3 亮度 xff1a 2 0 5 文档都不再是刺眼的白底黑字 xff0c 而是非常柔和的豆沙绿色 xff0c
  • Js apply方法详解,及其apply()方法的妙用

    Js apply方法详解 我在一开始看到javascript的函数apply和call时 非常的模糊 看也看不懂 最近在网上看到一些文章对apply方法和call的一些示例 总算是看的有点眉目了 在这里我做如下笔记 希望和大家分享 如有什么
  • 如何安装双系统之ubuntu安装

    如何安装双系统之ubuntu安装 1 首先在Windows下对磁盘分出一块空闲分区大概100G左右 2 然后下载Ubuntu16 04镜像 xff0c 制作启动盘 3 重启电脑 xff0c 按住对应的键 xff08 不同电脑型号可能不同 x
  • 场景分类综述——Remote Sensing Image Scene Classification Meets Deep Learning

    一 场景分类面临的挑战 场景分类的挑战包括 xff1a 1 类内多样性大 xff0c 2 类间相似性高 也称为类间可分性低 xff0c 3 对象 场景尺度的差异大 就类内的多样性而言 xff0c 挑战主要来自于在同一个语义类中出现的地物的巨
  • 配置服务器的磁盘阵列并正确分区

    磁盘阵列 xff0c 即独立磁盘冗余阵列RAID xff08 Redundant Array of Independent Disks xff09 xff0c 其实就是一个将多块独立磁盘结合在一起 xff0c 从而提高数据的可靠性和I O性
  • 软件项目组织架构安排

    这个主题涉及到三个方面 xff0c 项目计划管理 组织管理和技术管理范畴 项目计划管理是项目管理中的一个大篇章 xff0c 包括时间计划 成本计划 费用计划等在内的各类计划管理 xff0c 不是本文章所谈的范围 xff0c 只是本文主题涉及
  • SpringBoot2.x学习(二):为属性注入配置文件中的值:@ConfigurationProperties注解的使用

    文章目录 一 64 ConfigurationProperties 简单介绍二 64 ConfigurationProperties 使用示范1 创建两个 javaBean2 在 SpringBoot 全局配置文件写入需要注入的值2 1 a
  • SpringBoot 2.x学习(三):为属性注入配置文件中的值:@Value 注解的使用

    文章目录 一 64 Value 注解的作用二 使用 64 Value 为普通成员变量注入值1 字面量 xff08 1 xff09 语法 xff08 2 xff09 举例 2 Spring 表达式 xff08 SpEL xff09 xff08
  • 数据结构与算法学习(一):线性表之数组的插入与删除(Java 实现)

    文章目录 一 数组介绍1 线性表2 连续的内存空间和类型相同的数据 二 利用数组实现插入操作及相应的时间复杂度分析1 数组原本有顺序 xff0c 插入后需要继续保持数组有序 xff08 1 xff09 思路分析 xff08 2 xff09
  • 抽象类与接口

    抽象类与接口 接口与抽象类 一 抽象类 说起抽象类 xff0c 我们先说一下如何定义一个抽象方法 span class token keyword abstract span span class token keyword class s
  • SpringBoot 项目集成 mybatis-generator

    SpringBoot 项目集成 mybatis generator mybatis 官方提供了一个插件 xff1a myabtis generator xff0c 可以根据数据库中的表生成对应的实体类和针对单表的一些操作方法 xff0c 可
  • InnoDB 和 MyISAM 的区别

    这里写自定义目录标题 MyISAMINNODB事务支持不支持支持数据行锁定不支持 xff08 表锁 xff09 支持 xff08 行锁 xff09 外键约束不支持支持全文索引支持不支持表空间的大小较小较大 xff0c 约为 2 倍 MyIS
  • xshell上传、下载文件

    安装 lrzsz yum y span class token function install span lrzsz 上传资源到服务器命令 rz 回车后 xff0c 会出现一个弹框 xff0c 选择上传的文件即可 从服务器下载资源命令 s
  • 浅谈vue+webpack项目调试方法

    题外话 xff1a 这几个月用vue写了三个项目了 xff0c 从绊手绊脚开始慢慢熟悉 xff0c 婶婶的感到语言这东西还是得有点框框架架 xff0c 太自由了容易乱搞 xff0c 特别人多的时候 从webpack开始 直接进入正题 有人觉
  • CentOS7下vlan网卡配置

    操作系统 xff1a CentOS 7 x86 64 Everything 1804 开源虚拟软件 xff1a Oracle VM VirtualBox 因为使用VirtualBox默认配置所以网卡设备名是enp0s3 root 64 lo
  • 12、基本数据链路层协议(数据链路层)

    1 基本数据链路层协议 引言 在考察协议之前 xff0c 先明确一下有关底层通信模型的基本假设是有必要的 首先我们假设物理层 数据链路层和网络层都是独立的进程 xff0c 它们通过来回传递信息进行通信 如图所示 xff0c 物理层进程和某些
  • Java 中的上转型和下转型

    在我们的日常中 xff0c 上转型和下转型都使用的比较少 xff0c 所以当别人问起来什么是上转型 xff0c 什么是下转型 xff0c 自己往往一片模糊 xff0c 或者不能将他们进行明显的区分 在这里 xff0c 我将以我个人理解来论述
  • MySQL 中 Join 的基本实现原理

    http isky000 com database mysql join buffer nested loop implement DataBase Dec 3rd 2008 作者 xff1a Sky Jian 可以任意转载 但转载时务必以
  • mysql 常用命令

    1 mysqldump 可以把现有数据库中的表结构以及数据导入到一个文本文件中 mysqldump u root socket 34 socketname 34 p tpch no data gt tpch sql 如果不加上 no dat
  • 完全二叉树学习

    定义 xff1a 假设高度为h xff0c 那么前h 1层都是满的 xff0c 最后一层 xff0c 从左向右 xff0c 连续集中在最左边 xff1b k层的完全二叉树总节点个数最小为2 k 1 xff0c 最大节点个数为2 k 1 可以