一、引入
树在我们生活中随处可见,当然除非你的生活环境比较特殊(沙漠等)。树有根,有树干、树枝、树叶。而我们今天要讨论的是数据结构中的树,它的结构和我们生活中的树几乎无异,下面我将为大家一一讲解树的定义及其存储结构。
二、树的定义
①首先我们得确定一个概念,树是一个有限的集合,集合中的元素称为结点。
1、结点的个数为0:称为空树。
2、结点的个数为1:此节点称为根节点。
3、节点的个数大于1:则除了根结点以外的结点又可分为多个集合,每一个集合本身其实质上也是一棵树,并且是根节点的子树。
②注意:1、树之间是没有交叉的;
2、当节点数大于0时,树的根节点是唯一的,一棵树只能有一个根节点;
③结点的分类:在这里有一个度的概念:一个结点拥有子树的个数称为该节点的度。
1、度为0的结点称为叶子节点,相当于我们现实当中的树,如果到了叶子那段,说明往下就没有了;
2、根节点是最开始的结点,是唯一的结点;
3、在根节点和叶子节点之间的结点称为内部节点,或者叫分支节点、非终端结点。
④结点之间的关系表示:和我们人类之间亲属的关系表示一样,结点的子树的根节点称为该节点的孩子结点,反之,该节点称为孩子结点的双亲结点(父母同体);同一个双亲结点下的孩子结点互称为兄弟。另外还得注意,结点的祖先是从根节点途径到该节点的路径所经过的所有结点,包括根节点。以某一节点为根节点的子树下的所有节点都是该根节点的子孙。
⑤节点的层次:我想听到层次这个概念大家应该不会陌生。规定根节点为第一层,它的孩子为第二层,若某一结点在第k层,则它的孩子在第k+1层。输的深度就是节点的最大层次。
⑥森林:森林是树的集合
⑦树结构和线性结构的区别:
1、线性结构的第一个数据元素无前驱,最后一个元素无后继,中间的元素有一个前驱和一个后继;
2、树结构的根节点没有双亲,并且是唯一的;叶子节点可以有多个,没有孩子结点,中间的结点有一个双亲并且有一个或多个孩子。