11.树Tree(1)
2021-02-13 本文已影响0人
Stone_説
目录:
1.树的概念
2.树的术语
3.树的种类
4.树的存储与表示
5.树的常见的应用场景
1.树的概念
树是一种抽象数据类型或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。
它是由n(n>=1)个有限结点组成的一个具有层次关系的集合。把它叫做"树"是因为它看起来像一棵倒挂的
树,也就是说它是根朝上,而叶朝下的。
树.jpg
树的特点:
1.每个结点有零个或多个子结点
2.没有父结点的结点称为根结点
3.每一个非根结点有且只有一个父结点
4.除了根结点外,每个子结点可以分为多个不相交的子树
2.树的术语
1.结点的度:一个结点含有的子树的个数称为该结点的度
2.树的度:一棵数中,最大的结点的度称为树的度
3.叶结点或终端结点:度为零的结点
4.父亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点
5.孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点
6.兄弟结点:具有相同的父结点的结点称为兄弟结点
7.结点的层次:从根开始定义起,根为第1层,根的结点为第2层,以此类推
8.树的高度或深度:树中结点的最大层次
9.堂兄弟结点:父结点在同一层的结点互为堂兄弟
10.结点的祖先:从根到该结点所经历分支上的所有结点
11.子孙:以某结点为根的子树中任一节点都称为该结点的子孙
12.森林:由m(m>=0)棵互不相交的树的集合称为森林
3.树的种类
无序树:树中任意结点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树;
有序树:树中任意结点的子结点之间有顺序关系,这种树称为有序树;
有序树分为还有以下种类:
1.二叉树:每个结点最多含有两个子树的树称为二叉树;
1.1完全二叉树:对于一棵二叉树,假设其深度为d(d>1).除了第d层外,其他各层的结点数目均已达到最大值,且第d层所有结点从左向右连续地紧密排列,
这样的二叉树被称为完全二叉树,其中满二叉树的定义是所有叶子结点都在最底层的完全二叉树。
1.2平衡二叉树(AVL树):当且仅当任何结点的两棵子树的高度差不大于1的二叉树
1.3排序二叉树(二叉查找树(英语:Binary Search Tree),也成为二叉搜索树,有序二叉树)
2.霍夫曼树(用于信息编码):带权路径最短的二叉树称为哈夫曼树或最优二叉树
3.B树:一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多余的两个子树
完全二叉树:
满二叉树:
满二叉树.jpg
4.树的存储与表示
4.1顺序存储
将数据结构存储在固定的线性结构中,然而在遍历速度上有一定的优势,但因所占空间比较大,是非主流二叉树。二叉树通常链式存储
二叉树的顺序存储.jpg
4.2链式存储
常见树的链式存储都表示为二叉树进行处理,子结点最多为2个
二叉树的链式存储.jpg
5.树的常见的应用场景
1.xml,html等,那么编写这些东西的解析器的时候,不可避免用到树
2.路由协议就是使用了树的算法
3.mysql数据库索引
4.文件系统的目录结构
5.所以很多经典的AI算法其实都是树搜索,此外机器学习中的decision tree也是树结构