树:
(1)N(N>=0)个结点的有限集
(2)对于不只有根结点的树,除根结点外,其余结点被分为M(M>0)个互不相交的集合T1,T2,…..Tm,其中每个集合T(i)(1<=i<=m)又是与树类似的子树,每个树的根节点只有一个前驱,可以有多0个或多个后继
(3)分三类:空树、只有根结点的树、一般树
为什么要研究树这个非线性数据结构
查询高效
如dom树、文件资源管理器
空树:没有结点的树,以下讨论的树皆为非空树
一、基本知识
树:
1、结点的度:结点向下连接得到的结点个数
2、树的度:树中所有结点的度中的最大值
3、根结点:每棵树有且仅有一个根结点
4、叶子结点:度为0的结点
二叉树:
1、二叉树:每个结点的度最多为2的树
2、父亲结点:除根结点外,每课二叉树有且仅有一个父亲结点
3、左孩子结点:结点左边连接的结点
4、右孩子结点:结点右边连接的结点
二、满二叉树
1、满二叉树:
(1)除叶子结点外其它结点的度都为2的树
(2)叶子结点都在最后一层
2、层数为n
(1)第k层结点的个数为2^(k-1)
(2)叶子结点的个数为2^(n-1)
(3)非叶子结点的个数为2^(n-1)-1
(4)结点个数为2^n-1
三、二分搜索树/二叉排序树
1、二分搜索树
(1)是二叉树
(2)每个结点的值大于其左子树所有结点的值,小于其右子树所有结点的值
(3)每一棵子树也是二分搜索树
(4)存储的元素必须具有可比性
2、遍历二分搜索树
(1)将重复元素添加到二分搜索树中
遍历结果
(2)根据前序遍历和中序遍历结果画树(画出的树结构不唯一,有时还存在画出的树不正确的情况)
(3)可以通过添加frequence属性记录结点值出现的次数来对重复元素做特殊处理