二叉树的性质和存储结构

树的定义

(Tree)是n(n≥0)个结点的有限集,它为空树非空树

对于非空树T:

  • 有且仅有一个称之为根的结点
  • 除根节点以外的其余结点可分为m(m>0)个互补相交的有限集T1,T2…Tm,其中每一个集合本身又是一颗树,并且称为根的子树
    在这里插入图片描述
    例如上图:A是根结点,T1={B,E,F,G},T2={C,H},T3={D,I,J}

树的基本术语

基本术语:

  • 结点的度:结点的子树个数(A结点度为3)
  • 树的度:树的所有结点的度的最大值(为3)
  • 叶子结点:度为0的结点(E、F、H…)
  • 非终端结点:度不为0的结点(A、B、C、D)
  • 双亲和孩子:结点的子树的根称为该结点的孩子,相应的,该结点称为孩子的双亲(C是H的双亲,H是C的孩子)
  • 兄弟:同一双亲的孩子之前互称兄弟(E、F、G)
  • 祖先:从根到该结点所经分支上的所有结点(F的祖先是A、B)
  • 子孙:以某结点为根的子树中的任一结点都是(B的子孙为E、F、G)
  • 层次:结点的层次从根开始定义起,根为第一层,根的孩子为第二层。
  • 堂兄弟:双亲在同一层的结点互为堂兄弟(H与E、F、G、I、J)
  • 树的深度:树中结点的最大层次称为树的深度或高度(图中为3)
  • 森林:是m(m≥0)棵互不相交的树的集合

二叉树

二叉树是n(n≥0)个结点所构成的集合,它为空树(n=0)或非空树

对于非空树T:

  • 有且仅有一个称之为根的结点
  • 除根节点以外的其余结点分为两个互不相交的子集T1和T2,且T1和T2本身又都是二叉树
1、二叉树与树的主要区别
  • 二叉树的每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点)
  • 二叉树的子树有左右之分,其次序不能颠倒
2、 二叉树的五种基本形态

在这里插入图片描述
(a):空二叉树
(b):仅有根结点的二叉树
(c):右子树为空的二叉树
(d):左、右子树均非空的二叉树
(e):左子树为空的二叉树

3、 二叉树的性质
  • 在二叉树的第 i 层上至多有 2^(i-1)个结点(i≥1)
  • 深度为 k 的二叉树至多有2^k-1个结点(k≥1)
  • 对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1
4、满二叉树、完全二叉树:

在这里插入图片描述


5、完全二叉树的两个性质

在这里插入图片描述
在这里插入图片描述

二叉树的存储结构

1、顺序存储结构
#define MAXTSIZE 100  //二叉树的最大结点数
typedef TElemType SqBiTree[MAXTSIZE];//0号单元存储根结点
SqBiTree bt; //数组bt

在这里插入图片描述
在这里插入图片描述
图中的‘NO’和‘^’表示不存在此结点
由此可见,这种顺序存储结构仅适用于完全二叉树,对一般二叉树会导致存储空间的极大浪费,所以,一般二叉树更适合链式存储结构

2、链式存储结构
typedef struct BiTNode
{
   TElemType data;   //结点数据域
   struct BiTNode *lchild,*rchild; //左右孩子指针
}BiTNode,*BiTree;

二叉树的结点:
在这里插入图片描述
二叉树的存储结构:
在这里插入图片描述
链表存储结构:
在这里插入图片描述


借鉴:《数据结构》严蔚敏

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值