树与二叉树

二叉树的定义:

二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分 [1]  。

树中的常见术语:

(1)结点:树中的一个独立单元。包含一个数据元素及若于指向其子树的分支,如图 (b) 中的 A 、 B 、 C 、 D 等.(下面术语中均以图 (b) 为例来说明)

(2)结点的度:结点拥有的子树数称为结点的度。例如,A的度为 3, C的度为l, F的度为0。

(3)树的度:树的度是树内各结点度的最大值。图 (b) 所示的树的度为3。

(4) 叶子: 度为 0 的结点称为叶子或终端结点。结点 K 、 L 、 F 、 G 、 M 、 I 、 J都是树的叶子。

(5) 非终端结点:度不为 0 的结点称为非终端结点或分支结点。除根结点之外,非终端结点也称为内部结点。

(6)双亲和孩子:结点的子树的根称为该结点的孩子,相应地,该结点称为孩子的双亲。例如,B的双亲为A, B的孩子有E和F。

(7) 兄弟:同一个双亲的孩子之间互称兄弟。例如,H 、 I 和J互为兄弟。

(8) 祖先:从根到该结点所经分支上的所有结点。例如, M 的祖先为 A 、 D 和H。

(9) 子孙:以某结点为根的子树中的任一结点都称为该结点的子孙。如 B 的子孙为E 、 K 、 L 和F。

(10) 层次:结点的层次从根开始定义起,根为 第一层,根的孩子为第二层。树中任一结点的层次等千其双亲结点的层次加 l。

(11)堂兄弟:双亲在同 一层的结点互为堂兄弟。例如,结点 G 与E 、 F、 H 、 I 、 J互为堂兄弟。

(12)树的深度:树中结点的最大层次称为树的深度或高度。图(b)所示的树的深度为4。

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

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

二叉树的性质:

性质1:二叉树的第i层上至多有2i-1(i≥1)个节点 [6]  

性质2:深度为h的二叉树中至多含有2h-1个节点 [6]  。

性质3:若在任意一棵二叉树中,有n0个叶子节点,有n2个度为2的节点,则必有n0=n2+1 [6]  。

性质4:具有n个节点的满二叉树深为log2n+1。

性质5:若对一棵有n个节点的完全二叉树进行顺序编号(1≤i≤n),那么,对于编号为i(i≥1)的节点: [6] 

当i=1时,该节点为根,它无双亲节点 [6]  。

当i>1时,该节点的双亲节点的编号为i/2 [6]  。

若2i≤n,则有编号为2i的左节点,否则没有左节点 [6]  。

若2i+1≤n,则有编号为2i+1的右节点,否则没有右节点 [6]

二叉树的存储结构
二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。
顺序存储
顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用只有堆才会使用数组来存储(堆在下一篇文章中讲到)。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。

链式存储
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。

二叉树的遍历:

遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有节点,使每一个节点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个节点转换成为一个线性序列来表示 [7]  。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值