1. 前序序列、中序序列,唯一确定一棵二叉树。
    (前序找出根节点,然后根据中序知道该根节点的左右子树,再依据左右子树的根来继续判断)
    后序序列、中序序列,唯一确定一棵二叉树。
    (后序找出根节点,然后根据中序知道该根节点的左右子树,再依据左右子树的根来继续判断)
    前序序列、后序序列,不能确定一棵二叉树的
    (无法判断根节点的左右子树,无法确定树)

  2. 二叉树的遍历:从根节点开始看。
    例如先序遍历,在一棵树中先判断哪个节点为根节点输出,再判断左子节点。

     进入左子节点后,再在当前的树中判断哪个为根节点进行输出。
     如一个树的根左右均遍历完成。那么返回上一层。(书上147页)
  3. 树变森林,森林变树:左孩子,右兄弟。特指二叉树。 (书上165页)(14年20题)
    {

       1、树变森林:
      {

    将右边的子树变为兄弟节点,放到同一深度,右子树与兄弟节点有同一个根节点
    (如果有根节点将兄弟节点也连接到根节点上)。
    将左边子节点仍为子节点。
    (变完之后的森林中的兄弟节点之间的连线去掉)
    }

     2、森林变树:将兄弟节点(同一平面上的节点)放在右子树上。将子节点仍为子节点。

    }

  4. AOE网,关键路径,关键活动。
    Ve选择通往此点的最大的路径,Vl由Ve逆推减去最小的数值(代价最小的数值),l-e为可推迟时间(推迟时间为0的点为关键点)
    Ve为最早开始时间,Vl为最迟开始时间。

           a1

    Va--------->Vb
    e为活动最早开始时间,a1的e=Va的e
    l为活动最迟开始时间,a1的l=(Vb的l-a1的代价)

  5. 最小生成树:有Kruskal算法和Prim算法。
    Kruskal算法:依次连接权值最小的边,不能形成回路,连接N-1条边。
    Prim算法:选一条边在它的直接相连的边中选取权值最小的边,不能形成回路,连接N-1条边。
    Dijkstra算法:求节点V1到其他节点的最短路径。
    选取最短的路径,不断进行比较选择。

  6. 二叉排序树:左子树上的节点的数都小于根节点的数,右子树上的节点的数都大于根节点的数。使用中序遍历后可得,从小到大的有序数列。
    平衡二叉树:该节点的左右子树层数的绝对值相差不超过1。若不平衡就要进行相应旋转。
    平衡二叉树的旋转:LL右单旋转,RR左单旋转,LR先左后右旋转,RL先右后左旋转。
    (旋转:找到最低不平衡节点下两条线的左右,旋转时带上在连线上的三个点。)

  7. B-树的构建规则:
    中间结点有[m/2]≤ k ≤ m的孩子,[m/2]-1≤ k ≤ m-1的关键字。(【】选取大的数)
    B-树始终为平衡多叉树,叶子节点在同一层。
    当一层满了之后才向上升一层。
    B-树的插入,删除操作始终在叶子节点处进行。

         插入:按照排序树左小右大规则,在叶子节点处插入。
         删除:叶子节点直接删除。非叶子节点选择左子树(右子树)中最右(左)下的结点中最后(最前)一个关键字。
  8. 哈希表表长n,构造(0~~n-1)的表,通常使用除留余数法,得出余数是那个数字放到那个表中。

         处理冲突:若表中已有元素。
      开放地址法:直接放于下一个空闲的表中。          
      二次探测再散列:加 1 的平方,加(-1)的平方,加 2 的平方.....(以此类推)。(14年第18题)