前言
C语言树形结构
一、树形结构:
1、树的基本概念
一种表示层次关系(一对多)的数据关系
有且仅有一个特定的节点,该节点没有前驱,被称为根节点。
剩余的n个互不相交的子集组成,其中的每一个子集也都是一棵树,被称为根节点的子树
注意:树形结构具有递归性(树中有树)
2、树的表示方法:倒悬树、嵌套法、凹凸法
3、树的专业术语
节点:组成树的基础元素,同时它也可以是一棵树
节点的度:该节点子树的数量
树的度:树中的节点的数量
节点的层次:根节点的层次为1,它的孩子层次为2,孩子的孩子层次为3,以此类推
树的深度:这棵树的最大层次树
叶子节点:节点的度为0的节点
双亲和孩子:节点的子树都成为孩子节点,该节点就是他们的双亲节点
兄弟:具有同一个双亲节点,被称为兄弟节点
祖先: 从根节点出发到该节点,中间经过的所有节点都称为它的祖先
子孙: 一个节点的子树中的任意一个节点都称为它的子孙
堂兄弟:双亲在同一层的节点,称为堂兄弟节点
森林:n个互不相交的树的集合称为森林
4、树的存储
树可以顺序存储、链式存储,还可以混合存储,由于存储的信息不同,有以下三种常见表示方式:
双亲表示法: 顺序存储
位置 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 sub_arr(存储孩子位置的数组)
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
优点:找孩子方便
缺点:找双亲不方便
兄弟表示法:
双亲值存储第一个孩子节点,然后链式指向所有的兄弟节点
优点:可以方便查询到所有的兄弟节点
缺点:查询双亲比较麻烦
总结:普通树不常用,一般会转换成二叉树使用
总结
以上,有错误,还请指正