【笔记14】树的基本概念,二叉树,真二叉树,满二叉树,完全二叉树

简介: 节点、根节点、父节点、子节点、兄弟节点空树:没有任何节点的树一棵树可以只有 1 个节点(即只有根节点)子树、左子树、右子树

一、树(Tree)的基本概念

在这里插入图片描述

  • 节点、根节点、父节点、子节点、兄弟节点
  • 空树:没有任何节点的树
  • 一棵树可以只有 1 个节点(即只有根节点)
  • 子树、左子树、右子树

---

  • 节点的(degree):子树的个数
  • 树的度:全部节点的度的最大值
  • 叶子(leaf)节点:度为 0 的节点
  • 非叶子节点
  • 层数(level):根节点是第 1 层,根节点的子节点是第 2 层,以此类推
  • 节点的深度(depth):从根节点开始到当前节点的唯一路径上的节点总数(节点13的深度是5;节点6的深度是3)
  • 节点的高度(height):从当前节点开始到最远叶子节点的路径上的节点总数(节点13的高度是0;节点6的高度是3)
  • 树的深度:全部节点深度中的最大值
  • 树的高度:全部节点高度中的最大值
  • 树的深度等于树的高度

---

  • 有序树:树中节点的子节点之间有顺序关系
  • 无序树:树中节点的子节点之间没有顺序关系
  • 森林:由 m(m >= 0)棵互不相交的树组成的集合


二、二叉树(Binary Tree)

(1) 二叉树的特点

① 每一个节点的最大为 2(最大拥有 2 棵子树)
② 左右子树是有顺序的
③ 即使某节点只有一棵子树,也严格区分左右子树
④ 二叉树是有序树

(2) 二叉树的性质

① 非空二叉树的第 i 层最多有 2^(i-1) 个节点(i >= 1)
② 高度为 h 的二叉树上最多有 2^h - 1 个节点(h >= 1)

③ 对于任意一棵非空二叉树,如果叶子节点的个数为 n0,度为 2 的节点个数为 n2,则有:n0 = n2 + 1【对于非空二叉树,没有子树的节点的个数等于有两棵子树的节点的个数加1】
性质 ③ 的证明:

  • 假设度为 1 的节点个数为 n1,那么二叉树的节点总数 n 等于 n0 + n1 + n2
  • 二叉树的边数 T = n1 + n2 * 2 = n - 1 = n0 + n1 + n2 - 1【一个节点的边数等于度;除了根节点,每个节点的顶部都有一条边】
  • 化简:T = n1 + n2 * 2 = n - 1 = n0 + n1 + n2 - 1


三、真二叉树(Proper Binary Tree)

特点:全部节点的度要么为0,要么为2(没有度为1的节点)


四、满二叉树(Full Binary Tree)

特点:
① 在真二叉树的基础上,所有的叶子节点都在最后一层
② 在同样高度的二叉树中,满二叉树的叶子节点数量最多,总结点数量最多
③ 满二叉树一定是真二叉树,但真二叉树不一定是满二叉树

性质:

  • 若满二叉树的高度为 h(h >= 1)

-- 第 i 层的节点数量是 2^(i-1)
-- 叶子节点数量是 2^(h-1)
-- 总节点数是2^h - 1


五、完全二叉树(Complete Binary Tree)

(1) 完全二叉树特点

① 叶子节点只会出现在最后层,且最后一层的叶子节点都靠对齐
② 完全二叉树从根节点到倒数第二层是一棵满二叉树
③ 满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树

(2) 完全二叉树性质

  • 度为 1 的节点只有左子树
  • 度为 1 的节点要么是 1 个,要么是 0 个
  • 同样节点数量的二叉树,完全二叉树的高度最小
相关文章
|
7月前
|
Ubuntu Linux Windows
IP地址查看方法
本指南介绍了在不同操作系统中查看设备IP地址的方法。在Windows系统中,可通过命令提示符(输入`ipconfig`)或设置界面查找IPv4地址;Linux系统中,使用终端命令`ifconfig`或`ip addr show`获取网络接口的IP;Mac系统则可在“系统偏好设置”中的“网络”查看,或通过终端执行相同命令获取。这些方法简单易行,适用于各种常见场景。
3444 11
|
4月前
|
传感器 数据采集 人工智能
基于STM32单片机的智能晾衣架设计与实现【开源免费】
随着智能家居的发展,传统晾衣架已经难以满足现代家庭对便捷、智能化的需求。基于STM32单片机的智能晾衣架能够实现自动升降、光照检测、风干控制、远程控制等功能,为家庭用户提供更智能、更舒适的晾晒体验。本项目以STM32F103C8T6为核心控制器,通过电机驱动模块、光照传感器、温湿度传感器、蓝牙/Wi-Fi通信模块,实现晾衣架的自动化与远程控制。
基于STM32单片机的智能晾衣架设计与实现【开源免费】
|
Kubernetes NoSQL 网络协议
Boost实现简易服务器和客户端示例
Boost实现简易服务器和客户端示例
|
安全 虚拟化 Docker
解决:VMware Workstation 与 Device/Credential Guard 不兼容
因为在官网下载了win版的docker,而会自带下载虚拟机Hyper-V,这个和我之前下载的vmware虚拟机造成冲突了,导致后者不能使用,所以打开vmware报错如下:
6384 0
解决:VMware Workstation 与 Device/Credential Guard 不兼容
|
监控 BI API
利用ZABBIX进行服务器自动巡检并导出报表
利用ZABBIX进行服务器自动巡检并导出报表
利用ZABBIX进行服务器自动巡检并导出报表
|
算法
海明码详解
本文详细介绍了海明码(Hamming Code)的概念、原理和应用,包括信息位与校验位的关系、校验位的计算方法、错误检测与纠正过程,并通过实例展示了如何使用海明码进行编码,突出了海明码在提高数据传输可靠性方面的重要性。
1329 0
海明码详解
|
算法 芯片
基于MPPT最大功率跟踪算法的光伏并网发电系统simulink仿真
本项目采用Simulink仿真构建基于MPPT的最大功率跟踪光伏并网发电系统,自行建立PV模型而非使用内置模块。系统包含MPPT控制器、PI控制器、锁相环及逆变器等,实现光伏阵列在各种条件下高效运行于最大功率点。仿真结果显示光伏并网输出的电流(Ipv)、电压(Upv)及功率(Ppv)波形。通过闭环控制,系统持续调整以维持最佳功率输出,有效提升光伏系统的整体效能和环境适应性。
|
缓存 负载均衡 安全
深入探索Nginx高性能Web服务器配置与优化
【5月更文挑战第7天】本文深入探讨了Nginx的配置与优化,重点介绍了基础配置参数如`worker_processes`、`worker_connections`和`keepalive_timeout`,以及优化策略,包括使用epoll事件驱动模型、开启gzip压缩、启用缓存、负载均衡和安全配置。此外,还提到了性能调优工具,如ab、nginx-stats和nmon,以助于提升Nginx的性能和稳定性。
|
缓存 API Python
Python实战演练之全国地震预警
Python实战演练之全国地震预警
|
安全 关系型数据库 MySQL
mysql:MySQL数据库修改用户权限(远程访问权限、操作权限)
mysql:MySQL数据库修改用户权限(远程访问权限、操作权限)
3918 0
mysql:MySQL数据库修改用户权限(远程访问权限、操作权限)