树形结构:
1、树的基本概念
一种表示层次关系(一对多)的数据结构
有且仅有一个特定的节点,该节点没有前驱,被称为根节点。
剩余的n个互不相交的子集组成,其中的每一个子集也都是一棵树,被称为根节点的子树
注意:树型结构具有递归性(树中有树)
2、树的表示方法:倒悬树、嵌套法、凹凸法
3、树的专业术语(不同资料略有不同)
节点:组成树的基础元素,同时它也可以是一棵树
节点的度:该节点子树的数量
树的度:树中的节点的数量
节点的层次:根节点层次为1,它的孩子层次为2,孩子的孩子层次为3,以此类推
树的深度:树的最大层次数
叶子节点:节点的度为0的节点
双亲和孩子:节点的子树都称为孩子节点,该节点就是它们的双亲节点
兄弟:具有同一个双亲节点,被称为兄弟节点
祖先:从根节点出发到该节点,中间经过的所有节点都称为它的祖先
子孙:一个节点的子树中的任意一个节点都成为它的子孙
堂兄弟:双亲在同一层节点,称为堂兄弟节点
森林:n个互不相交的树的集合称为森林
4、树的存储
树可以顺序存储、链式存储,还可以混合存储,由于存储的信息不同,有以下三种常见表示方式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HuXmMog-1629198727394)(G:\学习日志\指针培训\2数据结构与算法\例1.png)]
双亲表示法 顺序
位置 data 双亲的位置
0 A -1
1 B 0
2 C 0
3 D 1
4 E 1
5 F 2
6 G 3
7 H 4
8 I 4
优点:方便找到双亲
缺点:不方便找孩子
孩子表示法
顺序:浪费空间
位置 data sub_arr(存储孩子的数据)
0 A 1,2
1 B 3,4
2 C 5
3 D 6
4 E 7,8
5 F
6 G
7 H
8 I
链式+顺序:节约空间
位置 data ListHead
0 A 1->2->N
1 B 3->4->N
2 C 5->N
3 D 6->N
4 E 7->8->N
5 F
6 G
7 H
8 I
优点:找孩子方便
缺点:找双亲不方便
兄弟表示法
双亲只存储第一个孩子节点,然后链式指向所有的兄弟节点
优点:可以方便查询到所有的兄弟节点
缺点:查询双亲比较麻烦
总结:普通树不常用,一般会转换成二叉树使用