一、简答题 1、 链表:链表就是一串存储数据的链式结构
链式的优点在于,每个数据之间都是相关联的
2、 线性结构: 线性结构是一个有序数据元素的集合
常用的线性结构有:线性表,栈,队列,双队列,数组,串
3、 树与二叉树 二叉树是每个结点最多有两个子树的有序树; 树是由 n(n>=1)个有限节点组成一个具有层次关系的集合
树和二叉树的 2 个主要差别: 1
树中结点的最大度数没有限制,而二叉树结点的最大度数为 2; 2
树的结点无左、右之分,而二叉树的结点有左、右之分
4、 堆 堆通常是一个可以被看做一棵树的数组对象
堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树
5、 二叉排序树 二叉排序数的(递归)定义:1、若左子树非空,则左子树所有节点的值均小于它的根节点;2、若右子树非空,则右子树所有节点的值均大于于它的根节点;3、左右子树也分别为二叉排序树
二、应用题 1、 树与二叉树 ① 前中后序遍历序列 一、已知前序、中序遍历,求后序遍历 例:前序遍历: GDAFEMHZ 中序遍历: ADEFGHMZ 画树求法: 第一步,根据前序遍历的特点,我们知道根结点为G 第二步,观察中序遍历ADEFGHMZ
其中root 节点G 左侧的ADEF 必然是root 的左子树,G 右侧的HMZ 必然是 root 的右子树
第三步,观察左子树ADEF,左子树的中的根节点必然是大树的root 的leftchild
在前序遍历中,大树的root 的leftchild 位于 root 之后,所以左子树的根节点为D
第四步,同样的道理,root 的右子树节点HMZ 中的根节点也可以通过前序遍历求得
在前序遍历中,一定是先把 root 和 root 的所有左子树节点遍历完之后才会遍历右子树,并且遍历的左子树的第一个节点就是左子树的根节点