树与树算法
一、树与树算法
1、树的概念
树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。
它具有以下特点:
(1)每个节点有零个或多个子节点
(2)没有父节点的节点称为根结点
(3)每一个非根节点有且只有一个父节点
(4)除了根结点外,每个节点可以分为多个不相交的子树
2、树的术语
节点的度:一个节点含有的子树的个数称为该节点的度
树的度:一棵树中,最大的节点的度称为树的度
叶节点或终端节点:度为零的节点
父亲节点或父节点:若一个节点含有子节点,则称这个节点称为其子节点的父节点
孩子节点或子节点:一个节点含有的子树的根结点称为该结点的子节点
兄弟节点:具有相同父节点的节点互称兄弟节点
节点的层次:从根开始定义起,根为第一层,根的子节点为第二层,以此类推
树的高度或深度:树中节点的最大层次
3、树的种类
【1】无序树
树中任意节点的子节点之间没有顺序关系,称为无序树,自由树
【2】有序树
树中的任意节点的子节点之间有顺序关系
(1)二叉树
每个节点最多含有两个子树的树
(2)完全二叉树
对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其他各层的节点数目均以达最大值,且第d层所有节点从左向右连续地紧密排列
其中满二叉树的定义是所有的叶节点都在最底层的完全二叉树
(3)平衡二叉树(AVL树)
当且仅当任何节点的两颗子树的高度差不大于1的二叉树
(4)排序二叉树(二叉查找树)『Binary Search Tree』
又称二叉搜索树,有序二叉树
(5)霍夫曼树(用于信息编码)
带权路径最短的二叉树
(6)B树
一种对读写操作进行优化的自平衡的二叉查找树,能保持数据有序,拥有多余两个子树
4、树的储存与表示
顺序储存:将数据结构储存在固定的数组中,然后在遍历速度上有一定的优势,但因此所占空间比较大,是非主流二叉树。
二叉树通常以链式储存。
链式储存: