七、树型结构
1.树的基本概念:
一种表示层次(一对多)关系的数据结构
有且只有一个特定的节点,该节点没有前驱节点,称为根节点(root)
剩余的n个互不相交的子集,其中的每一个子集也都是一棵树,被称为根节点的子树;
注意:树型结构有递归性(树中有树)
2.树的表示形式:
倒悬树、嵌套法,凹凸法
3.树的专业术语:
节点:组成树的基础元素,同时单节点也是一棵树
节点的度:该节点子树的数量
树的度:树中所有的节点的度的最大值
树的密度:树中所有节点的数量
树的深度(高度):树的最大层次为树的深度
节点的层次:根节点的层次为1,它的孩子层次为2,孩子的孩子层次为3....
叶子节点:节点的度为零的节点。
双亲节点和孩子节点:节点的字数被称为该节点的孩子节点,该节点就是孩子节点的双亲节点。
兄弟节点:具有同一个双亲节点,互为兄弟节点
堂兄弟:双亲节点互为兄弟节点
祖先节点:从根节点出发到该节点,路径上经过的所有节点都称为该节点的祖先
子孙:一个节点的子树中任意一个节点都是它的子孙
4.数的存储:
树可以顺序存储、链式存储,还可以混合存储
可以根据存储的信息不同,数有以下存储方式:
双亲表示法: 顺序
位置: data 双亲下标
0 A -1
1 B 0
2 C 0
3 D 1
4 E 1
5 F 1
6 G 2
7 H 4
优点:方便找到双亲
缺点:查找孩子结点麻烦
孩子表示法:
顺序: 浪费内存
位置 data son_arr(存储子节点的数组)
0 A 1,2,8
1 B 3,4,5
2 C 6
3 D
4 E 7
5 F
6 G
7 H
8 X
链式: 节约内存
位置 data ListHead(存储子节点的链表)
0 A 1->2->8->NULL
1 B 3->4->5->NULL
2 C 6->NULL
3 D NULL
4 E 7->NU