1. 树及相关特性
1.1. 树的概念
树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。
树结构在客观世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。
树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程。
在计算机领域中被大量应用的树结构主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree。文件系统和数据库系统中常常使用B/B+ 树,他通过对每个节点存储个数的扩展,使得对连续的数据能够进行较快的定位和访问,能够有效减少查找时间,提高存储的空间局部性从而减少IO操作。他广泛用于文件系统及数据库中,如:
- Windows:HPFS文件系统
- Mac:HFS,HFS+文件系统
- Linux:ResiserFS,XFS,Ext3FS,JFS文件系统
- 数据库:ORACLE,MYSQL,SQLSERVER等中
通过本文将记录本人最近复习算法及数据结构中相关树及常见的树结构的存储表示及其各种运算,文中的观点及结论均来自互联网和相关的书籍,并通过本人自己的实践及调试。
1.1.1. 家族树
在现实生活中,有入如下血统关系的家族可用树形图表示:
- 张源有三个孩子张明、张亮和张丽;
- 张明有两个孩子张林和张维;
- 张亮有三个孩子张平、张华和张群;
- 张平有两个孩子张晶和张磊。
以上表示很像一棵倒画的树。其中"树根"是张源,树的"分支点"是张明