数据结构 树和二叉树概念及性质

1、引入

数据结构 树和二叉树概念及性质_第1张图片

 树是以分支关系定义的层次结构,是一对n的关系。

2、树的定义

树(Tree)是n(n≥0)个结点的有限集。树的定义是一个递归的定义。
若n= 0,称为空树;
若n >0,则它满足如下两个条件:
(1)有且仅有一个特定的称为根(Root)的结点;
(2)其余结点可分为m (m≥0)个互不相交的有限集T1,T2,T3,....Tm,其中每一个集合本身又是一棵树,并称为根的子树(SubTree)。
数据结构 树和二叉树概念及性质_第2张图片

 3、树的基本术语

数据结构 树和二叉树概念及性质_第3张图片

 树的度:树内各结点的度的最大值

树的深度:树中结点最大层次

数据结构 树和二叉树概念及性质_第4张图片

 数据结构 树和二叉树概念及性质_第5张图片

 数据结构 树和二叉树概念及性质_第6张图片

 4、二叉树的定义

二叉树的结构最简单,规律性最强;
所有树都能转为唯一对应的二叉树,不失一般性。
普通树(多叉树)若不转化为二叉树,则运算很难实现
二叉树在树结构的应用中起着非常重要的作用,因为对二叉的许多操作算法简单,而任何树都可以与二叉树相互转换,这样就解决了树的存储结构及其运算中存在的复杂性


二叉树是n(n≥0)个结点的有限集,它或者是空集(n = 0),或者由一个根结点及两棵互不相交的根的左子树和右子树的二叉树组成。(它不是树也不是有序树)
特点
1、每个结点最多有俩孩子(二叉树中不存在度大于2的结点)。

2、子树有左右之分,其次序不能颠倒。
3、二叉树可以是空集合,根可以有空的左子树或空的右子树。
 

*二叉树结点的子树要区分左子树和右子树,即使只有一棵子树也要区分,说明它是左子树,还是右子树。【左孩子、右孩子】
树当结点只有一个孩子时,就无须区分它是左还是右的次序。因此二者是不同的。这是二叉树与树的最主要的差别。

(也就是二叉树每个结点位置或者说次序都是固定的,可以是空,但是不可以说它没有位置,而树的结点位置是相对于别的结点来说的,没有别的结点时,它就无所谓左右了)

 数据结构 树和二叉树概念及性质_第7张图片

 数据结构 树和二叉树概念及性质_第8张图片

 5、二叉树性质

①在二叉树的第i层上至多2^{^{i-1}}个结点(i≥1)。每一层上至少1个结点。

②深度(最大层次、高度)为k的二叉树至多2^{k}-1个结点(k ≥1).
③对任何一棵二叉树T,如果其叶子数(度为0)为n0,度为2的结点数为n2,则n0 = n2 + 1

数据结构 树和二叉树概念及性质_第9张图片

 6、满二叉树、完全二叉树

*它们在顺序存储方式下可以复原

(1)满二叉树

数据结构 树和二叉树概念及性质_第10张图片

 满二叉树在同样深度的二叉树中结点个数最多

满二叉树在同样深度的二叉树中叶子结点个数最多

(2)完全二叉树

深度为k的具有n个结点的二叉树,当且仅当其每个结点都与深度为k的满二叉树中编号为1~n的结点一一对应时,称之为完全二叉树。

数据结构 树和二叉树概念及性质_第11张图片

 注:在满二叉树中,从最后一个结点开始,连续去掉任意个结点(一定是连续的去掉!!!),即是一棵完全二叉树。(满二叉树是完全二叉树、完全二叉树不一定是满二叉树)

特点:1.叶子只可能分布在层次最大的两层上。
2.对任一结点,如果其右子树的最大层次为i,则其左子树的最大层次必为i或i+1。


7、完全二叉树性质

性质4表明了完全二叉树结点数n与完全二叉树深度k之间的关系

数据结构 树和二叉树概念及性质_第12张图片

数据结构 树和二叉树概念及性质_第13张图片

 性质5表明了完全二叉树中双亲结点编号与孩子结点编号之间的关系

数据结构 树和二叉树概念及性质_第14张图片

你可能感兴趣的:(#算法,数据结构)