1.树是一种非线性的数据结构,它是由n个有限结点组成有层次关系的集合.
2.树具有以下特点,可以根据这些特点来判断一个数据结构是否是树
- 每个结点具有0个或多个子结点
- 每个子结点只有一个父结点
- 没有前驱的结为根结点
- 除了根结点外,每个子结点又可以由m棵不相关的子树组成
3.相关术语定义
- 节点的度:一个节点含有的子树的个数称为该节点的度;
- 叶节点或终端节点:度为零的节点称为叶节点;
- 非终端节点或分支节点:度不为零的节点;
- 双亲节点:在含有孩子的节点中,这个节点称为孩子节点的双亲节点;
- 孩子节点:一个节点子树的根节点称为孩子节点;
- 兄弟节点:具有相同双亲节点的节点互称为兄弟节点;
- 树的度:一棵树中,最大的节点的度称为树的度;
- 节点的层次:从根开始定义起,根为第0层,根的孩子为第1层;
- 树的高度或深度:树中节点的最大层次;
- 堂兄弟:双亲在同一层的节点互为堂兄弟;
- 节点的祖先:从根到该节点所经分支上的所有节点;
- 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
- 森林:由m(m>=0)棵互不相交的树的集合称为森林;
4.分类
二叉树:每个结点最多包含两棵子树的树
树和二叉树的三个主要差别:
- 树的结点个数至少为1,而二叉树的结点个数可以为0;
- 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;
- 树的结点无左、右之分,而二叉树的结点有左、右之分。
完全二叉树:一棵有n个结点的二叉树,按满二叉树的编号方式对它进行编号,若树中所有结点和满二叉树1~n编号完全一致,则称该树为完全二叉树(Complete Binary Tree)
满二叉树:是每个结点都有0个或2个子结点的树
PS:即满二叉树一定是完全二叉树
二叉树及完全二叉树的性质:
- 在二叉权树的第i层上至多有2i-1个结点.