【数据结构】树的基础知识:树和二叉树的逻辑结构与性质

树的定义

递归定义

树的定义有不同方式,下面仅给出最常见的递归定义:

树:n(n\ge0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:

  1. 有且仅有一个特定的结点称为根结点
  2. n\textgreater1时,除根节点之外的其余结点被分成m(m\textgreater0)互不相交的有限集合$T_{1},T_{2},\cdots ,T_{m}$,其中每个集合又是一棵树,并称为这个根结点的子树

n=0时,树为空树;n=1时,树为只有根结点的树。

示例

本图可结合“基本术语”食用

如图所示的一棵树,共有13个结点,A是根,其余结点分成三个互不相交的子集:

T_{3}=\left \{ B,E,K,L,F\right \},T_{2}=\left \{ C,G\right \},T_{2}=\left \{ D,H,I,J,M\right \}

这些子集都是根A的子树,且本身也是一棵树。这些树除根以外的结点也可分为互不相交的子集:

B的子树:T_{11}=\left \{ E,K,L\right \},T_{12}=\left \{ F\right \}

C的子树:T_{21}=\left \{ F \right \}

D的子树:T_{31}=\left \{H,M\right \},T_{31}=\left \{I\right \},T_{31}=\left \{J\right \}

而在T_{11}中,E为根,\left \{K\right \}\left \{L\right \}其两棵互不相交的子树。他们本身都是只有一个结点的树。

基本术语

  • :结点拥有的子树总数。树的度为该树中结点的度的最大值
  • 叶子结点(终端结点):度为0的结点
  • 层次:从根开始定义。若某结点在第l层,则其孩子结点在第l+1
  • 深度(高度):树中(叶子)结点的最大层次
  • 分支结点(非终端结点):度不为0的结点
  • 内部结点:非根非叶的全部结点
  • 路径:长度等于两个结点之间通过的结点数目减一
  • 孩子(Child)结点:结点的子树的根
  • 双亲(Parent)结点:孩子结点的根
  • 兄弟(Sibling)结点:双亲结点相同的结点
  • 堂兄弟结点:双亲在同一层次的结点
  • 祖先:结点的祖先是从根到该结点所经分支上的所有结点
  • 子孙:以某结点为根的子树的任一结点都称为该结点的子孙
  • 森林:m(m\geqslant 0)棵互不相交的树的集合。

注:

  • 有序树:树中各结点各子树有次序,左右不能互换。有序树最左边的子树的根是它的第一个孩子,最左右边的子树的根是它的最后一个孩子。
  • 树可用二元组Tree=(root,F)表示:root是树的根结点,Fm(m\geqslant 0)棵树的森林。F=(T_{1},T_{2},...,T_{m})T_{i}=(r_{i},F_{i})为根root的第i棵子树。
  • m\ne0时,树根及其子树森林间关系如下:
  • RF=\left \{ \left \langle root,r_{i} \right \rangle \right.\mid i=1,2,\cdots ,m,m>0\left. \right \}

二叉树

定义

  1. 每个结点至多只有两棵子树
  2. 二叉树是有序树,其子树有左右之分。

形态

特殊的二叉树

满二叉树

概念

每个非叶子节点都有两个子节点,且所有叶子节点都在同一层上。满二叉树是同深度下结点最多的二叉树。

特点

完全二叉树

概念

除了最后一层外,其他层的节点数都是满的,最后一层的节点都靠左排列。按照满二叉树如图方式编号,完全二叉树与之编号相同的结点在图中的位置也完全相同。

2^{i}-1

特点
  1. 叶子结点只能出现在最下两层且最下层的叶子结点集中在二叉树的左面
  2. 若有度为1的结点,只能有一个,且该结点有且只有左孩子
  3. 深度为k的完全二叉树,在第(k-1)层一定是满二叉树
  4. 在同样结点个数的二叉树中,完全二叉树的深度最小。

二叉树性质

在二叉树的第i层上至多有2^{i-1}个结点\left ( i\geqslant 1 \right )

深度为k的二叉树最多有2^{k}-1个结点

任意二叉树,若其终端结点为n_{0},度为2的结点为n_{2},则n_{0}=n_{2}+1

具有n个结点的完全二叉树的深度为\lceil \log_{2} (n+1) \rceil

具有n个结点的完全二叉树,将其结点按层序编号(从第1层到第\lceil \log_{2} (n+1) \rceil层,每层从左到右),则对任一结点i(1\leqslant i\leqslant n),有

  1. i=1,则结点i是二叉树的根,无双亲;若i>1,则其双亲是结点\lfloor i/2 \rfloor
  2. 2i>n,则结点i无左孩子,即为叶子结点;若2i\leqslant n,则其左孩子为结点2i
  3. 2i+1>n,则结点i无右孩子;若2i\leqslant n,则其左孩子为结点2i+1

很水的文字证明:

图示:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值