一、树的定义
树是由根结点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或称为树根。
相关术语
节点的度:一个节点含有的子树的个数称为该节点的度;
叶节点或终端节点:度为0的节点称为叶节点;
非终端节点或分支节点:度不为0的节点;
双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
兄弟节点:具有相同父节点的节点互称为兄弟节点;
树的度:一棵树中,最大的节点的度称为树的度;
节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
树的高度或深度:树中节点的最大层次;
堂兄弟节点:双亲在同一层的节点互为堂兄弟;
节点的祖先:从根到该节点所经分支上的所有节点;
子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
森林:由m(m>=0)棵互不相交的树的集合称为森林;
二、树的结构
1.双亲表示法
由于树中的每个结点都有唯一的一个双亲结点,所以可用一组连续的存储空间(一维数组)存储树中的各个结点,数组中的一个元素表示树中的一个结点,每个结点含两个域,数据域存放结点本身信息,双亲域指示本结点的双亲结点在数组中位置。
2.孩子兄弟表示法
孩子兄弟表示法的每个节点有两个指针域,一个指向其长子,另一个指向其兄弟.
用孩子兄弟表示法可以表示为:
二叉树
1.二叉树的概念和性质
二叉树的定义:二叉树是一种最简单的树形结构,树中每个节点至多关联到两个后继点,且一个结点关联的后继结点明确的分左右。
满二叉树:如果二叉树中所有分支结点的度数都是2,则称它为一棵满二叉树
扩充二叉树:对于二叉树T,加入足够多的新叶结点,使T的原有结点都变为度数为2的分支结点,得到的二叉树T为扩充二叉树
完全二叉树:一棵二叉树至多只有最下面的一层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,而在最后一层上,右边的若干结点缺失的二叉树,则此二叉树成为完全二叉
2.二叉树的遍历
深度优先遍历:顺着一条路尽可能向前探索,必要时回溯;
广度优先遍历:在所有路径上齐头并进