第五章二叉树与第五章二叉树与树树树形结构是一种十分重要的数据结构
树形结构是一种十分重要的数据结构
本章讨论的二叉树、树和树林都属于树形本章讨论的二叉树、树和树林都属于树形结构
在树形结构中每个结点最多只有一个在树形结构中每个结点最多只有一个前驱,但可有多个后继的结构
前驱,但可有多个后继的结构
它们的共同之处是都表示了一种具有它们的共同之处是都表示了一种具有层次的分支关系
层次的分支关系
1二叉树及其抽象数据类二叉树及其抽象数据类型型二叉树是一类简单而又重要的树形结构
本节先介绍它的基本概念和重要性质,然后引入二叉树的抽象数据类型
1基本概念基本概念•二叉树可以定义为结点的有限集合,这个集合或者为空集,或者由一个根及两棵不相交的分别称作这个根的左子树和右子树的二叉树组成
•二叉树的定义是个递归定义
•二叉树可以是个空集合,这时的二叉树称为空二叉树
二叉树也可以是只有一个结点的集合,这个结点只能是根;它的左子树和右子树均是空二叉树
•下图表示的是二叉树的五种基本形态
二叉树相关的一组术语:父结点、左(右)子结点、边兄弟祖先、子孙路径、路径长度结点的层数结点的度数二叉树的高度:二叉树中结点的最大层数称为二叉树的高度
例如,二叉树t的高度为3
树叶、分支结点•满二叉树:如果一棵二叉树的任何结点或者是树叶,或有两棵非空子树,则此二叉树称作满二叉树(离散数学中称此树是正则的)
•完全二叉树:如果一棵二叉树至多只有最下面的两层结点度数可以小于2,其余各层结点度数都必须为2,并且最下面一层的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树
•完全二叉树不一定是满二叉树
•扩充的二叉树:把原二叉树的结点都变为度数为2的分支结点,也就是说,如果原结点的度数为2,则不变,度数为1,则增加一个分支,度数为0(树叶),则增加两个分支
•新增加的结点(