数据结构之树

本文详细介绍了树和二叉树的基本概念及其特性。包括树的定义、节点分类、有序与无序树、二叉树的特点及形态、满二叉树与完全二叉树的区别等,帮助读者深入理解这些数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

树的定义

树是n(n>=0)个节点的有限集。n=0时称为空树。在任意一棵非空树:
(1)有且仅有一个特定的称为根Root的结点
(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…Tm,其中每一个集合本身又是一棵树,并称为根的子树。

节点分类

节点拥有的子树个数称为结点的 度(degree)
度为0的结点称为叶节点或终端结点
度不为0的结点称为非终端节点(或分支结点)
除根结点外,分支结点也称内部结点
树的度是树内各结点的度的最大值


度与深度

结点的层次,从根开始定义,根为第一层,根的孩子为第二层
树节点的最大层次称为树的深度(depth)或高度

有序树跟无序树

将树中节点的各子树看成从左到右是依次有次序的,不能互换的,则称树为有序树,否则无序树

树的存储结构

表示法:双亲表示法,孩子表示法,孩子兄弟表示法
就是在数据域后加入不同的指针域,指向不同的关系

二叉树

二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称空二叉树),
或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成,

二叉树特点

  • 每个结点最多有两棵子树,所以不存在度大于2的结点。没有子树有一棵子树都是可以的
  • 左子树和右子树是有顺序的
  • 即使有一个子树,也要分清左子树还是右子树

二叉树具有的5中形态

  • 空二叉树
  • 只有一个根节点
  • 根节点只有左子树
  • 根节点只有右子树
  • 根节点既有左子树,又有右子树

特殊二叉树

  • 斜树:所有结点都只有左结点,叫左子树
    所有结点只有右结点,叫右子树
    两者统称斜树
  • 满二叉树:在一棵二叉树中,所有分支结点都存在左子树和右子树,并且所有的叶子结点都在同一层上,这样的二叉树叫满二叉树,达到一个平衡的节奏
  • 完全二叉树:对一棵具有n个结点的二叉树按层序编号,如果编号为 i 的结点与同样深度满二叉树中编号为i 的结点在二叉树的位置完全相同,则这棵二叉树称为完全二叉树
    满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树
    按层编号:编号从上往下,从左往右,不间断,
    如果编号出现空档,说明不是完全二叉树

二叉树存储结构

二叉树的顺序存储结构:
用一维数组存储二叉树中节点,节点的存储位置,也就是数组下标要能体现节点之间的逻辑关系
1—–2—-3—-4—–5—-6—-7—-8—-9
A—-B—-C—-D—-E—-F—-G—H—-I
顺序存储结构一般只适用于完全二叉树
对于一棵深度为k的右斜树,要分配2的k次方-1个内存

二叉链表:
由数据域跟两个指针域构成
若再增加一个指向双亲的指针域,则称为三叉链表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值