1、树的定义
什么是树?
长这样?
(图片来自网络)
不不不,树是一种数据结构,树是包含 n(n>=0) 个节点,当 n=0 时,称为空树,非空树中(n-1)条边的有穷集,在非空树中:
- 每个元素称为节点
- 有一个特定的节点被称为根节点或树根
- 除根节点之外的其余数据元素被分为m(m>=0)个=个互不相交的集合,其中每一个集合身也是一棵树,被称作原树的子树
树也可以这样定义:
树是由根节点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的节点,所定义的关系称为父子关系。父子关系在树的节点之间建立了一个层次结构。在这种层次结构中有一个节点具有特殊的地位,这个节点称为该树的根节点,或称为树根。
树的结构如下图所示:
2、树的基本概念
3、树的表示
儿子—兄弟表示法——二叉树的引入
这里的Element是储存的数据,FirstChild指向它的第一个儿子节点,NextSibling指向它的下一个兄弟
其表现方式为:
其中的N是指NULL
这种树的表示方法可以有效防止空间的浪费,在结构复杂,数据不统一时,可以节省大量空间,并且结构统一,方便管理
将其旋转45°,就得到了二叉树
接下来给出二叉树的代码:
typedef struct TNode *Position;
typedef Position BinTree; /* 二叉树类型 */
struct TNode{ /* 树结点定义 */
ElementType Data; /* 结点数据 */
BinTree Left; /* 指向左子树 */
BinTree Right; /* 指向右子树 */
};