这几天都在学习树形结构,没想到经过了高数的毒打还要被编程的树毒打。。。
树型结构:
- 树的基本概念
一种表示层次关系的(一对多)数据结构
有且仅有一个特定的节点,该节点没有前驱,被称为根节点
剩余的n个互不相交的子集,其中每个子集都是一颗树,被称为根节点的子树
注意:数型结构具有递归性(树中有数) - 树的表示方法:倒悬树、嵌套法、凹凸法
- 树的专业术语:
节点: 组成树的基础元素,同时它也是一棵树。
节点的度: 该节点的子树的数量
树的度(密度): 树中节点的数量
叶子节点: 节点的度为0的节点
双亲: 节点的子树被称为孩子,该节点就是他们的双亲
兄弟: 具有同一个双亲节点,被称为兄弟节点。
祖先: 从根节点出发到该节点,经过的所有节点被称为该节点的祖先。
子孙: 一个节点的子树中的任意一个节点都被称为它的子孙
节点的层次: 根节点记为1,它的孩子层次为2,孩子的孩子层次为3,以此类推
堂兄弟: 双亲在同一层的互为堂兄弟
树的深度: 树的最大层次为树的深度
森林: n个不相交的树的集合,被称为森林 - 树的存储
树可以顺序存储、链式存储,也可以混合存储,由于存储的信息不同,有以下表示方法
双亲表示法: 顺序
位置 | data | 双亲 |
---|---|---|
0 | A | -1 |
1 | B | 0 |
2 | C | 0 |
3 | D | 1 |
4 | E | 2 |
5 | G | 4 |
6 | F | 4 |
优点: 方便找到双亲节点 缺点: 查找孩子节点不方便
顺序
链式 day6补充 几种不常见的树
普通树并不常用,一般都是把普通树转换成二叉树操作
二叉树:
是常用的一种数据结构,处理起来比普通简单,而且普通树可以很方便的转换成二叉树