数据结构——树(基础概念)

1.树的定义

(Tree)是 n (n>=0) 个节点的有限集,(注意! 当n=0时,树为空树)。对于非空树T,它有且仅有一个称之为根的节点。其次,除根节点以外的其余节点可分为m( m > 0)个互不相交的有限集T1,T2,T3,……,Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。

        

如上图2所示,这是一个有6个节点的树,其中A是根,其余节点分成三个互不相交的子集:T1 = { B , E ,F } , T2 = { C } , T3 = { D }。T1、T2、T3都是根A的子树,并且其本身也是一棵树。例如单看T1,它的根为B,其余两个节点也可以分为互不相交的子集:T11 = { E } , T12 = { F }。且E和F也可以是以自身为根节点的树。

所以,树的结构定义是一个递归的定义,即在树的定义中又用到树的定义。

2.树的基本术语

(1)节点:树中的一个独立单元。包含一个数据元素及若干指向其子树的分支,如上图中的A、B、C、D等。

(2)节点的度:节点拥有的子树称为节点的度。例如A的度为3,B的度为2,C的度为0。

(3)树的度:树的度是树内各节点度的最大值。

(4)叶子:度为0的节点称为叶子或终端节点。

(5)非终端节点:度不为0的节点称为非终端节点或分支节点。

(6)双亲和孩子:节点的子树的根称为该节点的孩子,相应地,该节点称为孩子的双亲。

(7)兄弟:同一个双亲的孩子之间互称兄弟。

(8)祖先:从根到该节点所经分支上的所有节点。

(9)子孙:以某节点为根的子树中的任一节点都称为该节点的子孙。

(10)层次:节点的层次从根开始定义,根为第一层,根的孩子为第二层。树中任一节点的层次等于其双亲节点的层次加1.

(11)堂兄弟:双亲在同一层的节点互为堂兄弟。

(12)树的深度:树中节点的最大层次称为树的深度或者高度。

(13)有序树和无序树:如果将树中节点的各子树看成从左至右是有次序的(不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子。

(14)森林:m(m>=) 棵互不相交的树的集合。对树中每个节点而言,其子树的集合即为森林。由此,也可以用森林和树相互递归的定义来描述树。

3.二叉树的定义

二叉树是n(n>=0)个节点所构成的集合,它或为空树(n=0),或为非空树。对于非空树T:

(1)有且仅有一个称之为根的节点;

(2)除根节点以外的其余节点分为两个互不相交的子集T1和T2,分别称为T的左子树和右子树,且T1和T2本身又都是二叉树。

二叉树与树一样具有递归性质,二叉树与树的区别主要有以下两点:

(1)二叉树每个节点至多只有两棵子树(二叉树中不存在度大于2的节点);

(2)二叉树的子树有左右之分,其次序不能任意颠倒。

 4.二叉树的性质

二叉树的几个重要性质

性质1 在二叉树的第i层上至多有2*(i-1) (i>=1)个节点。

性质2 深度为k的二叉树至多有2*(k-1)  (k>=1) 个节点。

性质3 对任何一颗二叉树T,如果其终端节点数为n0,度为2的节点树为n2,则n0 = n2 +1

满二叉树 :深度为k且含有2*k - 1个节点的二叉树如下图所示

满二叉树的特点是:每一层上的节点树都是最大节点数,即每一层i的节点树都具有最大值2*i-1

完全二叉树: 深度为k的、有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中编号从1至n的节点一一对应时,称之为完成二叉树。如下图所示。

完全二叉树的特点是:

(1)叶子节点只可能在层次最大的两层上出现;

(2)对任一节点,若其右分支下的子孙的最大层次为l,则其左分支下的子孙的最大层次必为l或l+1。

性质4 具有n个节点的完全二叉树的深度为【log2n】+1(【x】表示不大于x的最大整数)。

性质5 如果对一棵有n个节点的完全二叉树(其深度为【log2n】+1)的节点按层序编号(从第1层到第【log2n】+1层,每层从左到右),则对任一节点i(1<=i<=n),以下结论成立。

       (1)如果i=1,则节点i是二叉树的根,无双亲;如果i>1,则其双亲PARENT(i)是节点【i/2】。

       (2)如果2i>n,则节点i无左孩子(其中节点i为叶子节点);否则其左孩子LCHILD(i)是节点2i。

       (3)如果2i+1 > n ,则节点i无右孩子;否则其右孩子RCHILD(i)是节点

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值