二叉树的定义与性质

目录

[二叉树 Binary Tree](#二叉树 Binary Tree)

二叉树的定义

二叉树和度为二的树

二叉树的基本形态

特殊的二叉树

满二叉树

完全二叉树

二叉树的性质

结点数之间的关系

二叉树每层最多结点数

完全二叉树的性质

编号性质

度为1的性质

叶节点只可能出现在最后两层

具有n个结点的完全二叉树的高度


二叉树 Binary Tree

二叉树是应用的最广泛的一种树形结构

二叉树的定义
  1. 由n个结点组成的有限集合
  2. n=0时,为空二叉树
  3. n>0时,二叉树由根+互不相交的左子树 和右子树组成(左右子树也是二叉树)
二叉树和度为二的树

|------------|-------------|
| 二叉树 | 度为二的树 |
| 所有结点都可以小于2 | 至少有一个节点的度为2 |
| 有序树,严格区分左右 | 无序树,不区分左右 |

二叉树≠度为2的树≠二叉树

二叉树的基本形态

二叉树的基本形态有五个:空二叉树,根、根+左子树、根+右子树、根+左右子树

任何二叉树都可以由以上五种复合而来

特殊的二叉树
满二叉树

满二叉树就是最"丰满"的二叉树

特征:

所有分支节点都有两个子节点

所有叶节点都在最后一层

或者

满二叉树的结点的度仅有0或2两种情况

完全二叉树

除最后一层外其他层数的结点必须是满的 ;且最后一层可以不满,但必须从左到右连续排列

若最后一层满了,那这颗完全二叉树也是一颗满二叉树

二叉树的性质
结点数之间的关系

设

度为0的结点数 为:

度为1的结点数 为:

度为2的结点数 为:

该二叉树的结点数:

根据树的结点数的性质,结点数n=所有结点度数之和+1

联立:

二叉树每层最多结点数

根据前面的"m叉树每层最多结点数"为:

令,得:

再记二叉树的层数为,则

同理,我们可以进一步得出二叉树最多有多少个结点

根据前面的,h层的m叉树最多有个

令,得:

h层的二叉树最多有个结点

当二叉树为满二叉树时,满二叉树有个结点

完全二叉树的性质
编号性质

首先我们对于一个完全二叉树进行编号。编号的规则是:从上到下,从左到右依次对结点编号为

一、

设对第i个结点,其左孩子的编号为:;右孩子的编号为:;父亲为(下取整)

二、

最后一个分支节点(并非仅指整棵树的末分支节点)的编号为:整个树的编号(或者叫与它相对应的最后一个结点的编号)除以2,即:

既然是最后一个分支节点,那意思等价为:这个结点之后(不包含自己)的所有结点都是叶节点

即:满足,的结点都是分支节点,反之皆为叶节点

度为1的性质

一个完全二叉树,度为1的结点有且仅有1个或0个

叶节点只可能出现在最后两层

完全二叉树叶节点只可能出现在最后两层

具有n个结点的完全二叉树的高度

具有n个结点的完全二叉树的高度**** 或****

等价:n个结点的二叉树的最小高度

我们设这一完全二叉树的高度为h

情况一:明显,不能存在,这说明要想使树的高度为h,末层就必须至少存在一个结点,那么对于上面层的结点个数为:,再加上第h层的这一个,则有:

情况二:明显,不能存在,这说明想使树的高度为h,末层的结点最多填满而不能继续开辟下一层。那么这时这颗完全二叉树就是一颗满二叉树,则总结点数最多为:

综上有: ①

解法一:将①上式变形为:

进一步:

两边取对数得:

即:

向上取整为:

解法二:将①式变形为:

两边取对数得:

即:

向下取整为:

根据取整函数的平移性,得:

相关推荐
Bshaya_4 小时前
红黑树详解:概念、规则与插入实现
数据结构·红黑树·二叉搜索树·平衡树·插入逻辑
WBluuue5 小时前
数据结构与算法:分块(一):块状数组、块状链表
数据结构·c++·算法·链表
中伟视界6 小时前
煤矿安全监控数据造假识别:时序异常检测与AI视频交叉核验工程实践
1024程序员节
Be for thing6 小时前
PyTorch基础|Tensor张量详解,张量创建、数据类型与常用操作
pytorch·学习·1024程序员节
路灯上の马陈6 小时前
数据结构-树
数据结构·1024程序员节
benjormin6 小时前
Java数据结构 二叉搜索树
数据结构·算法
weixin_417396837 小时前
星级酒店境外电视频道怎么合法接入?合规要点与核对清单
开发语言·前端·php·1024程序员节·综合布线
北方的银狐-Zero8 小时前
OntoL 7.0|面向工业多智能体的语义本体套件,让异构系统真正 “看懂彼此”——OntoL的本体产品矩阵
人工智能·mysql·sqlite·1024程序员节·本体论·本体产品
云和数据.ChenGuang9 小时前
深入剖析 Python 的 MRO 规则:从 C3 线性化到实战踩坑
开发语言·python·1024程序员节