数据结构之树与二叉树

目录

一、树的相关概念

二、二叉树的概念

2.1 基础概念

2.2 特殊的二叉树

2.3 二叉树的性质

三、二叉树的存储结构

3.1 顺序存储

3.2 链式存储

四、二叉树的实现

4.1 顺序结构

4.2 链式结构


一、树的相关概念

  1. 节点(Node):树的基本单元,通常包含一个存储数据的元素和指向其子节点的指针。

  2. 根节点(Root):树的顶层节点,没有父节点的节点。

  3. 父节点(Parent):一个节点指向其子节点的节点。

  4. 子节点(Child):被其他节点指向的节点。

  5. 叶节点(Leaf):没有子节点的节点。

  6. 兄弟节点(Sibling):共享同一个父节点的节点。

  7. 子树(Subtree):树的一个分支,由一个节点及其所有后代节点组成。

  8. 深度(Depth):从根节点到某个节点的路径上的边的数量。

  9. 层数(Level):节点的深度加1,根节点的层数为1。

  10. 节点的度(Degree):一个节点的子节点的数量。

  11. 树的度(Degree):树中所有节点的度的最大值。

  12. 有序树(Ordered Tree):节点的子节点有左右顺序之分。

  13. 无序树(Unordered Tree):节点的子节点没有左右顺序之分。

  14. 二叉树(Binary Tree):每个节点最多有两个子节点的树。

  15. 完全二叉树(Complete Binary Tree):除了最后一层外,每一层的节点都是满的,最后一层的节点从左到右排列。

  16. 满二叉树(Full Binary Tree):所有非叶节点的度都为2的二叉树。

  17. 平衡二叉树(Balanced Binary Tree):左子树和右子树的深度差不超过1的二叉树。

  18. 二叉搜索树(Binary Search Tree):左子树中的节点的值都小于其父节点的值,右子树中的节点的值都大于其父节点的值。

  19. B树(B-Tree):一种自平衡的树结构,在数据库和文件系统中常用。

  20. 红黑树(Red-Black Tree):一种自平衡的二叉搜索树,用于实现高效的插入、删除和搜索操作。

二、二叉树的概念

2.1 基础概念

二叉树(Binary Tree)是一种特殊的树结构,每个节点最多只有两个子节点,分别称为左子节点和右子节点。这些子节点的位置不能交换。

二叉树具有以下特点:

  1. 每个节点最多有两个子节点,分别为左子节点和右子节点。
  2. 左子节点在节点的左侧,右子节点在节点的右侧。
  3. 左子树和右子树可以为空,但节点本身不为空。
  4. 二叉树没有限制子节点的顺序。

例如,下图展示了一个二叉树的示例结构:

在上图中,节点A是根节点,节点B和C是A的子节点,节点D和E是B的子节点,节点F是C的子节点。

2.2 特殊的二叉树

  1. 满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2^k-1,则它就是满二叉树。
  2. 完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。要注意的是满二叉树是一种特殊的完全二叉树。换句话来说,完全二叉树就是除了最后一层其他层都满的树。

2.3 二叉树的性质

  1. 深度为h时,满二叉树的总节点数为2^h-1;假设有n个节点:h = log(N+1)
  2. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有结点从0开始编号,则对于序号为i的结点有:
    1. 若i>0,i位置结点的双亲序号:(i-1)/2;i=0,i为根结点编号,无双亲结点
    2. 若2i+1<n,左孩子序号:2i+1,2i+1>=n否则无左孩子
    3. 若2i+2<n,右孩子序号:2i+2,2i+2>=n否则无右孩子

三、二叉树的存储结构

3.1 顺序存储

逻辑结构上是树,物理结构使用数组来实现

3.2 链式存储

逻辑结构上是树,物理结构使用链表来实现

四、二叉树的实现

4.1 顺序结构

详见博主的另一篇博客:二叉树二叉树的顺序实现-堆-CSDN博客

4.2 链式结构

详见博主的另一篇博客:二叉树的链式实现-CSDN博客

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值