常用数据结构之树

  数据结构是一种特殊的组织和存储数据的方式,使我们可以更高效的对存储的数据执行操作。以下介绍常用的数据结构中的树结构。

  树是一种层次结构,其中数据按层次进行组织并链接在一起。

  • 树的定义  

  树是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    

原文地址:https://www.cnblogs.com/smallzhen/p/14175949.html