浅谈树、二叉树、满二叉树、完全二叉树

一.树

树结构是一种非线性储存结构(数据元素之间存在一对一的线性关系),存储的是具有“一对多”关系的数据元素的集合!
在这里插入图片描述

图1 树结构




图1就是一个树结构!图1是使用树结构存储的集合 {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} 的示意图。对于数据 1 来说,和数据2、3 有关系;对于数据 4 来说,和 8、9 有关系。这就是“一对多”的关系。将具有“一对多”关系的集合中的数据元素按照上图的形式进行存储,整个存储形状在逻辑结构上看,类似于实际生活中倒着的树(图2倒过来),所以称这种存储结构为“树型”存储结构。
在这里插入图片描述

图2 现实生活的树
1.树的结点
  1. 结点:使用树结构存储的每一个数据元素都被称为“结点”。例如,图 1中,数据元素 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15都是是一个结点。
  2. 父结点:图1中,1就是2、3的父结点。
  3. 子结点:图1中,2、3是1的子结点。
  4. 兄弟结点:图1中,2、3, 4、5, 6、7都是兄弟结点。
  5. 根结点:每一个非空树都有且只有一个被称为根的结点。图1中,结点1就是整棵树的根结点,如果一个结点没有父结点,那么这个结点就是整棵树的根结点。
  6. 叶子结点:如果结点没有任何子结点,那么此结点称为叶子结点(叶结点)。例如图1中,结点 8、9、10、11、12、13、14、15都是这棵树的叶子结点。
2.树的度,层次和深度
  1. 度:对于一个结点,拥有的子树数(结点有多少分支)称为结点的度(Degree)。例如,图1中,根结点 1下分出了 2个子树,所以,结点 1 的度为 2。一棵树的度是树内各结点的度的最大值,所以图1整棵树的度的值是 3。
  2. 层次:从一棵树的树根开始,树根所在层为第一层,根的孩子结点所在的层为第二层,依次类推!图1中层次为4.
  3. 深度:一棵树的深度(高度)是树中结点所在的最大的层次。图1树的深度为 4。
3.有序树和无序树

如果树中结点的子树从左到右看,谁在左边,谁在右边,是有规定的,这棵树称为有序树;反之称为无序树。在有序树中,一个结点最左边的子树称为"第一个孩子",最右边的称为"最后一个孩子"。

4.什么是子树?

如图 1中,整棵树的根结点为结点 1,而如果单看结点 2、4、5、8、9、10、11 组成的部分来说,也是棵树,而且节点 2 为这棵树的根结点。所以称 2、4、5、8、9、10、11 这几个结点组成的树为整棵树的子树,同样,结点 4、8、9构成的也是一棵子树,根结点为 4。注意:单个结点也是一棵树,只不过根结点就是它本身。图 1中,结点 8、9、10、11 等都是树,且都是整棵树的子树。

树也可以这样定义:树是由根结点和若干棵子树构成的.

5.树和图有什么区别?
  1. 树是没有环的图,图不一定是树。
  2. 树是图的子集。
  3. 树有一个根节点,图没有。
  4. 树有层次划分,图没有。
  5. 树可以递归遍历,图不一定。
  6. 树是一种“层次”关系,图是“网络”关系。
  7. 在图中结点之间的关系是任意的,任何两个结点都可能相关。
    在这里插入图片描述
    图3 无向图



二.二叉树

1.二叉树满足的基本条件
  1. 必须是有序树。
  2. 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2。
2.二叉树特性
  1. 在第i层上的结点数必须小于等于2i-1
  2. 如果深度为i,那么所有的结点数小于等于2i-1。
  3. 度数为0的结点数(叶子结点数)=度数为2的结点数+1。
3.满二叉树

如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。图1就是个满二叉树。满二叉树除了满足普通二叉树的特点,还具有以下特点:

  1. 深度为 i的满二叉树必有 2i-1 个节点 ,叶子数为 2i-1
  2. 满二叉树中不存在度为 1 的节点,每一个分支点中都两棵深度相同的子树,且叶子节点都在最底层。
  3. 具有 n 个节点的满二叉树的深度为 log2n+1
    在这里插入图片描述
    图4 满二叉树!



4.完全二叉树

如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。

在这里插入图片描述

图5 完全二叉树




图5最后一层的节点没有按照从左向右分布,因此只能算作是普通的二叉树。
对于任意一个完全二叉树来说,对于任意一个结点 i ,完全二叉树还有以下几个结论成立:

  1. 当 i>1 时,父亲结点为结点 [i/2],其中[i/2]表示i/2取整 。(i=1 时,表示的是根结点,无父亲结点)。
  2. 如果 2i >n(总结点的个数) ,则结点 i 肯定没有左孩子(为叶子结点);否则其左孩子是结点 2i 。
  3. 如果 2i+1>n ,则结点 i 肯定没有右孩子;否则右孩子是结点 2i+1 。
  4. 具有n个结点的完全二叉树的深度至少为[log2n]+1,其中[log2n]表示log2n的整数部分。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值