注:定义来源于
《数据结构(C++版)(王红梅/胡明/王涛 编著)》 第2版。
数据结构的概念
- 数据(data)是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序所识别和处理的符号集合。
- 数据元素(data element)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。构成数据元素的不可分割的最小单位称为数据项(data item)。例如,学生学籍登记表,每个学生的档案就是一个数据元素,而档案中的学号、姓名等是数据项。
- 数据结构(data structure)是指相互之间存在一定关系的数据元素的集合。按照视点的不同,分为逻辑结构和存储结构。
- 数据的逻辑结构(logical structure)是指数据元素之间逻辑关系的整体。
- 数据的存储结构(storage structure)又称为物理结构,存储结构除了存储数据元素之外,必须隐式或者显式的存储数据元素之间的逻辑关系。通常有两种存储结构:顺序存储结构和链式存储结构。
- 顺序存储结构的基本思想是:用一组连续的存储单元存储是居元素。
- 链式存储结构的基本思想是:用一组任意的存储单元存储数据元素。
1 树的定义
- 在树中常常将数据元素称为节点(node)。
- 树(tree)是n(n>=0)个节点的有限集合。当n=0时,为空树。
2 树的基本术语
节点的度、树的度
某节点所拥有的子树的个数称为该节点的度(degree),树中各节点度的最大值称为该树的度。
叶子节点、分支节点
度为0的节点称为叶子节点(leaf node),也称为终端节点;度不为0的节点称为分支节点,也称为非终端节点。
3 树的遍历
3.1 前序遍历
若树为空,则操作返回;否则
- 访问根节点;
- 按照从左到右的顺序前序遍历根节点的每一个子树。
3.2 后序遍历
若树为空,则操作返回;否则
- 按照从左到右的顺序前序遍历根节点的每一个子树;
- 访问根节点 。
4 二叉树
4.1概念
- 二叉树:二叉树是每个结点最多有两个子树的树结构。
- 满二叉树:定义高度为h,并且由2h-1个结点组成的二叉树。满二叉树:定义高度为h,并且由2h-1个结点组成的二叉树。
- 完全二叉树:一个二叉树中,只有最下面两层结点的度可以小于2,且最后一层的叶子节点左边连续,倒数第二层的节点在右边连续。完全二叉树:一个二叉树中,只有最下面两层结点的度可以小于2,且最后一层的叶子节点左边连续,倒数第二层的节点在右边连续。
4.2 二叉树的性质
- 二叉树的第i层上最多有2i-1个节点。
- 在一棵深度为k的二叉树中,最多与2k-1个节点,最少有k个节点。
- 好多性质,,以后慢慢补
5.二叉树的遍历
前序遍历
若二叉树为空,则返回,否则
- 访问根节点;
- 前序遍历根节点所有的左子树;
- 前序遍历根节点所有的右子树;
中序遍历
若二叉树为空,则返回,否则
1.中序遍历根节点所有的左子树 ;
2. 访问根节点;
3. 中序遍历根节点所有的右子树;
后序遍历
若二叉树为空,则返回,否则
1.后序遍历根节点所有的左子树 ;
2. 后序遍历根节点所有的右子树;
3. 访问根节点;