一、树的定义
我们之前在将的都是一对一的线性结构,而树是一种一对多的数据结构,属于非线性结构。树是一个n各节点的有限集合。n=0时为空。有且仅有一个特定的根节点。它的子树互不相交。
结点的分类:
一个节点拥有的子树的数量称为节点的度。度为0的节点称为叶子结点。树的度是树内节点的度的最大值。
结点的关系:
结点的子树的根称为节点的孩子,相应的该节点对于孩子节点为双亲结点。同一个双亲结点的孩子称为兄弟节点
树的其他概念:
结点的层次从根节点开始,根为第一层,根的孩子为第二层。。。树中节点的最大层数称为数的深度。
二、二叉树(重点)
一般人们研究二叉树的比较多。所以重点介绍二叉树。
二叉树也是一棵树,是由一个根节点和两颗不相交的分别称为左子树和右子树组成。
二叉树的特点:
1、每个节点最多有两颗子树,所以二叉树中不存在度大于2的节点。
2、左子树和右子树都是有序的,不能任意颠倒位置。
3、即使数的结点只有一个子树,也要区分是左子树还是右子树。
二叉树有5种形态:
1、空二叉树
2、只有一个根节点
3、根节点只有左子树
4、根节点只有右子树
5、既有左子树也有右子树
所以相同结点可以有很多种不同形态的二叉树。
特殊二叉树:
1、斜树:所有结点只有左子树或右子树
2、满二叉树:所有分支节点都存在于左右子树上,并且所有叶子结点都在同一层。
3、完全二叉树:一颗有n个结点的二叉树按层序编号,如果编号为i的结点与同深度的满二叉树中编号为i的结点在满二叉树中位置完全相同,则这课二叉树称为完全二叉树。
完全二叉树的特点:
1、叶子结点只能出现在最下两层,且集中在左部连续位置。
2、倒数第二层的叶子结点一定在右部。
3、结点度数为1,则该结点只有左孩子,不存在右子树的情况。
4、同样结点的二叉树,完全二叉树的深度最小。
二叉树的性质:
1、在二叉树的第i层上之多有2的i-1次方个结点。
2、深度为k的二叉树至多有2的k次方-1个结点。
3、对任何一个二叉树,其叶子结点数为n1,度为2的结点个数n2,都有n1=