数据结构之树(图解)

文章目录

  • 前言
  • 一、树是什么?
  • 二、树的特点
  • 三、树的相关概念
  • 四、树的表示方法(孩子兄弟表示法)
  • 总结


前言

在学习完线性结构,例如顺序表、链表、栈、队列后,我们要开始学习一个新的数据结构----树

一、树是什么?

首先树是一个非线性的数据结构,由有限个节点组成的一个具有层次的集合。
如图,下面是树的逻辑结构,因为逻辑结构像一颗倒挂的树,也就是根在上,树枝朝下。
顾名思义被称为“”。

数据结构之树(图解)_第1张图片

二、树的特点

	我们来看上面的图
  1. 根节点:没有前驱结点的节点,如图中的A。
  2. 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti
    (1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继
  3. 树是递归定义的。
  4. 树又被称作树形结构,是一对多的,也就是一个节点对应多个节点。

三、树的相关概念

  1. N个节点的树有N-1条边
  2. 节点的度: 一个节点含有的子树的个数称为该节点的度 ;如图:A的度为3
  3. 树的度: 一棵树中,最大的节点的度称为树的度;如上图:树的度为3
  4. 叶节点或终端节点: 度为0的节点称为叶节点; 如上图:J、K、L、M、G等节点
  5. 叶节点分枝节点: 度不为0的节点,有孩子节点的节点
  6. 父节点: 有子树的节点,有子节点的节点子节点:有父节点的节点
  7. 兄弟节点: 具有相同父节点的节点
  8. 堂兄弟节点: 双亲在同一层的节点
  9. 节点的层次: 根节点是第一层,以此类推
  10. 树的高度或深度: 树中节点的最大层次,也是叶节点的层次
  11. 节点的祖先: 从根节点到该节点的所有节点都是这个节点的祖先,也就是从根节点往下找这个节点经过 的节点,当然也包括根节点。
  12. 子孙: 以某个节点为根节点的子树中的任意一个节点都是该节点的子孙
  13. 森林: 互不相交的多棵树叫森林

数据结构之树(图解)_第2张图片

四、树的表示方法(孩子兄弟表示法)

我们想用代码来写出一个完整的树,需要考虑的因素太多了,方法也很多,在这里我们讲一个树的最优方法供大家学习。

我们知道树是一对多的结构,所以这也同样会用到指针,但是指针应该有几个,都指向谁?这就又是一个问题了。不要慌张,先来看这颗树的逻辑结构。
数据结构之树(图解)_第3张图片

我们看到首先A这个根节点 链接着分别以B、C、D三个为根节点的子树,那我们是否就要在A这个节点上加三个指针呢?那是不是如果A链接4个就要加四个指针?很明显不可能这么做,这个时候就有一位大神发明了一种方法(孩子兄弟表示法)
这个方法总结成一句话就是,“父母看老大,老大看老二,老二看老三”。

如图:

数据结构之树(图解)_第4张图片

总结

以上就是我们今天讲述的 树的结构,下节课让我们继续学习新的知识-----二叉树

你可能感兴趣的:(数据结构,数据结构)