数据结构是一种特殊的组织和存储数据的方式,使我们可以更高效的对存储的数据执行操作。以下介绍常用的数据结构中的树结构。
树是一种层次结构,其中数据按层次进行组织并链接在一起。
- 树的定义
树是n个结点的有限集,对于非空树,有:
①有且仅有一个称为根的结点;
②除根结点以外的其余结点可分为m个互不相交的有限集,其中每个集合本身又是一棵树,并称为根的子树。
- 树的基本术语
- 结点:树中的一个独立单元(如上图的A、B、C)。包含一个数据元素及若干指向其子树的分支。
- 结点的度:结点拥有的子树数层位结点的度。比如上图中,A的度为3,C的度为1。
- 树的度:树内各结点度的最大值。如上图中的数的度为3。
- 叶子:度为0的结点成为叶子或终端结点。如上图中的K、L、M都是叶子。
- 非终端结点:度不为0的结点称为非终端结点或分支结点。除根结点外,非终端结点也称为内部结点。
- 双亲和孩子:上图中的B为E、F的双亲,而E、F为B的孩子。
- 兄弟:同一个双亲的孩子为兄弟,如E、F为兄弟。
- 祖先:从根到该结点的所经结点,如K的祖先为A、B、E。
- 子孙:如E、F、K、L为B的子孙。
- 层次:结点的层次从根开始定义,根为第一层,根的孩子为第二层。树中任意一结点的层次等于双亲结点的层次加一。
- 堂兄弟:双亲在同一层的结点互为堂兄弟,如F、G为堂兄弟。
- 树的深度:树中结点的最大层次称为竖的深度或高度,如上图中的树的深度为4。
- 有序树和无序树:如果树中结点的子树从左到右看,谁在左边,谁在右边,是有规定的,这棵树称为有序树;反之称为无序树。有序树中最左边的子树的根伟第一个孩子,最右边的称为最后一个孩子。
- 森林:是m棵互不交互的树的集合。
- 树的应用:
- 二叉树:用于实现表达式解析器和表达式求解器。
- 二进制搜索树:用于许多不断输入和输出数据的搜索应用程序中。
- 堆:由JVM用来存储java对象。
以上参考:https://mp.weixin.qq.com/s/rycQvasVNGcozyDiropSow、http://data.biancheng.net/view/23.html