数据结构——二叉树的定义以及主要特性

二叉树的定义以及主要特性

二叉树的定义:
二叉树是另一种树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。
与树相似,二叉树也以递归的形式定义。二叉树是n (n≥0)个结点的有限集合:
①或者为空二叉树,即n=0。.
②或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树,又分别是一棵二叉树。
二又树是有序树,若将其左、右子树颠倒,则成为另一棵不同的二叉树。即使树中结点只有一棵子树,也要区分它是左子树还是右子树。

一、二叉树与度为2的有序树的区别:

①度为2的树至少有3个结点,而二叉树可以为空。
②度为2的有序树的孩子的左右次序是相对于另一孩子而言的,若某个结点只有一个孩子,则这个孩子就无须区分其左右次序,而二叉树无论其孩子数是否为2,均需确定其左右次序,即二叉树的结点次序不是相对于另- -结点而言,而是确定的。

二、几种特殊的二叉树

(1)满二叉树
(2)完全二叉树:高度为h、有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树。
完全二叉树的特点如下图:在这里插入图片描述
(3)二叉排序树:左子树上所有结点的关键字均小于根结点的关键字;右子树.上的所有结点的关键字均大于根结点的关键字;左子树和右子树又各是一棵二叉排序树。

(4)平衡二又树。树上任一结点的左子树和右子树的深度之差不超过1。

三、二叉树的性质

在这里插入图片描述

四、二叉树的存储结构

1.顺序存储结构
二叉树的顺序存储是指用一-组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为i的结点元素存储在一-维 数组下标为i-1的分量中。依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映结点之间的逻辑关系,这样既能最大可能地节省存储空间,又能利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系。但对于一般的二叉树,为了让数组下标能反映二叉树中结点之间的逻辑关系,只能添加一些并不存在的空结点,让其每个结点与完全二叉树上的结点相对照,再存储到一-维数组的相应分量中。然而,在最坏情况下,一个高度为h且只有h个结点的单支树却需要占据近2^h- 1个存储单
元。
2.链式存储结构
由于顺序存储的空间利用率较低,因此二叉树一般都采用链式存储结构,用链表结点来存储二叉树中的每个结点。在二叉树中,结点结构通常包括若干数据域和若干指针域,二叉链表至少包含3个域:数据域data、左指针域lchild和右指针域rchild。
二叉树的链式存储结构描述如下:

typedef struct BiTNode {
ElemType data;//数据域
struct BiTNode *lchild, *rchild;//左、右孩子指针
}BiTNode, *BiTree;

ps:在含有n个结点的二叉链表中,含有n + 1个空链域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值