zoukankan      html  css  js  c++  java
  • 【数据结构】树

    概念

     

    (百度百科)树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

    从概念去理解,之所以叫“树”是因为形状像树,并非对“真实树”的模仿,所以不像链表结构一样可以参考现实中链状事物的构造。例如“真实树”有树干,而树状图是没有树干概念的,那么树状图又有什么特点呢,继续看:

    1、每个节点有零个或多个子节点;

    2、没有父节点的节点称为根节点;

    3、每一个非根节点有且只有一个父节点;

    4、除了根节点外,每个子节点可以分为多个不相交的子树;

    从以上特点可以看出,零个节点也可以是数,零节点相当于一个空集合,空集合也是树,称为空树,空树中没有结点。

     

    术语

     

    1、节点的度:一个节点含有的子树的个数称为该节点的度;

    如上图,A结点的度为3,B结点的度为2,c结点的度为1,D结点的度为3。

     

    2、叶节点或终端节点:度为0的节点称为叶节点;

    如上图,E、F、G、H、I、J均为叶节点。

     

    3、非终端节点或分支节点:度不为0的节点;

    如上图,A、B、C、D均为非终端节点。

     

    4、双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;

    如上图,A、B、C、D均为父节点。

     

    5、孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;

    如上图,B、C、D为A的子节点,E、F为B的子节点,G为C的子节点,H、I、J为子D的子节点。

     

    6、兄弟节点:具有相同父节点的节点互称为兄弟节点;

    如上图,B、C、D的父节点均为A,所以B、C、D为兄弟节点。

     

    7、树的度:一棵树中,最大的节点的度称为树的度;

    如上图,A、D节点的度均为最大值3,所以此树的度为3。

     

    8、节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

    如上图,A为第1层、B、C、D为第2层、E、F、G、H、I、J为第3层。

     

    9、树的高度或深度:树中节点的最大层次;

    如上图, E、F、G、H、I、J节点均为最大层第3层,所以次树的高度或深度为3。

     

    10、堂兄弟节点:双亲在同一层的节点互为堂兄弟;

    如上图, {E、F}与{G}与{H、I、J}是堂兄弟节点。

     

    节点的祖先:从根到该节点所经分支上的所有节点;

    如上图, 例如E节点的祖先有B、A。

     

    子孙:以某节点为根的子树中任一节点都称为该节点的子孙。

    如上图, 例如以A节点为根,那么除了自己的所有节点都是A的子孙。

     

    森林:由m(m>=0)棵互不相交的树的集合称为森林;在数据结构中,树和森林并不像自然界里有一个明显的量的差别,任何一棵树,只要删去根结点就成了森林。

    如上图, 除去根节点A,那么{B、E、F}、{C、G}、{D、H、I、J}这三棵互不相交的树就组成了一个森林。

     

    种类

     

    1、有序树:树中任意节点的子结点之间有顺序关系,这种树称为有序树;

     

    2、无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树;

     

    类型

     

    1、二叉树      

    二叉树、二叉查找树 (BST)、笛卡尔树、Top tree、T树

     

    2、自平衡二叉查找树 

    AA树、AVL树、红黑树、伸展树、树堆、节点大小平衡树

     

    3、B树  

    B树、 B+树、 B*树、Bx树、UB树、2-3树、2-3-4树、(a,b)-树、Dancing tree、H树

     

    4、Trie    

    前缀树、后缀树、基数树

     

    5、空间划分树      

    四叉树、八叉树、k-d树、vp-树、R树、R*树、R+树、X树、M树、线段树、希尔伯特R树、优先R树

     

    6、非二叉树 

    Exponential tree、Fusion tree、区间树、PQ tree、Range tree、SPQR tree、Van Emde Boas tree

     

    7、其他类型 

    堆、散列树、Finger tree、Metric tree、Cover tree、BK-tree、Doubly-chained tree、iDistance、Link-cut tree、树状数组

  • 相关阅读:
    【pytorch-ssd目标检测】可视化检测结果
    【pytorch-ssd目标检测】测试自己创建的数据集
    【pytorch-ssd目标检测】验证自己创建的数据集
    【pytorch-ssd目标检测】训练自己创建的数据集
    【pytorch-ssd目标检测】制作类似pascal voc格式的目标检测数据集
    【猫狗数据集】可视化resnet18的输出
    【猫狗数据集】pytorch训练猫狗数据集之创建数据集
    【猫狗数据集】对一张张图像进行预测(而不是测试集)
    Spring(注解方式)简单入门
    Oracle plsql中文字段乱码,where条件中文字段搜不到结果集
  • 原文地址:https://www.cnblogs.com/wcd144140/p/5411506.html
Copyright © 2011-2022 走看看