顺序和链式存储???——》

树的遍历???——》
 |
1、前序遍历
- 基本思想???——》根—左—右;
- 图中树的前序遍历为:1,2,5,6,7,3,4,8,9,10;
2、后序遍历
- 基本思想???——》左—右—根;
- 图中树的后序遍历为:5,6,7,2,3,9,10,8,4,1;
3、层次遍历
- 基本思想???——》从第一层开始,依此遍历每层,直到结束;
- 图中树的层次遍历为:1,2,3,4,5,6,7,8,9,10;
|
|
二叉树的相关概念和特性???——》

|
一般二叉树性质???——》
- 在非空二叉树的k层上,至多有2k个节点(k>=0);
- 高度为k的二叉树中,最多有2k+1-1个节点(k>=0);
- 对于任何一棵非空的二叉树,如果叶节点个数为n0,度数为2的节点个数为n2,则有: n0 = n2 + 1;
二叉树具有的性质???——》
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
- 它的左、右子树也分别是二叉排序树;
|
|
完全二叉树性质???——》
- 具有n个节点的完全二叉树的高度k为[log2n]
- 对于具有n个节点的完全二叉树,如果按照从上(根节点)到下(叶节点)和从左到右的顺序对二叉树中的所有节点从0开始到n-1进行编号,则对于任意的下标为k的节点,有:
- 如果k=0,则它是根节点,它没有父节点;如果k>0,则它的父节点的下标为[(i-1)/2];
- 如果2k+1 <= n-1,则下标为k的节点的左子结点的下标为2k+1;否则,下标为k的节点没有左子结点;
- 如果2k+2 <= n-1,则下标为k的节点的右子节点的下标为2k+2;否则,下标为k的节点没有右子节点;
满二叉树性质???——》
|
哈夫曼树???——》带权路径长度达到最小;权值较大的结点离根较近;
特点???——》
- 权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点;
- 只有度为0和度为2的结点,不存在度为1的结点;
哈夫曼算法的基本思想:
- 初始化:由给定的n个权值w1,w2,w3...wn构造n棵只有一个根结点的二叉树,从而得到一个二叉树集合F={T1,T2,T3...Tn};
- 选取与合并:在F中选取根结点的权值最小的两棵二叉树分别作为左右子树构造一棵新的二叉树,这棵新二叉树的根结点的权值为其左右子树根结点的权值之和;
- 删除与加入:在F中删除作为左右子树的两棵二叉树,并将新建立的二叉树加入到F中;
- 重复(2)、(3)两步,当集合F中只剩下一棵二叉树时,这棵二叉树便是哈夫曼树。
|
哈夫曼树题???——》
 |
1、前序遍历
- 基本思想???——》根—左—右;
- 图中树的前序遍历为:1,2,4,5,7,8,3,6;
2、中序遍历
- 基本思想???——》根—左—右;
- 图中树的前序遍历为:4,2,7,8,5,1,3,6;
3、后序遍历
- 基本思想???——》左—右—根;
- 图中树的后序遍历为:4,8,7,5,2,6,3,1;
4、层次遍历
- 基本思想???——》从第一层开始,依此遍历每层,直到结束;
- 图中树的层次遍历为:1,2,3,4,5,6,7,8;
|
|
树与二叉树区别???——》
- 树可以有多个子结点,二叉树最多只能两个结点;
- 树中的子结点是无序的,二叉树是分左子结点和右子结点;
- 二叉树不是特殊树,而是独立的数据结构;
|
|
图???——》
|
图的遍历???——》从图中某一个顶点出发,访问图中的每一个结点,并要求只能访问一次,不能重复访问;
有向图???——》
无向图???——》一个顶点度是与该顶点相邻接的顶点数;
无向完全图???——》
- 最大边数:
;
- 最小边数:0;
有向完全图???——》
- 最大边数:
;
- 最小边数:0;
|
【题目】

|
|
解析???——》
广度优先遍历
- 基本思想???——》首先访问顶点,再访问顶点的全部未访问的邻结点,再访问邻结点的所有结点即可(类似树的层次遍历);
- 广度优先遍历???——》V1,V2,V3,V4,V5,V6或V1,V4,V3,V2,V6,V5;
深度优先遍历
- 基本思想???——》首先访问顶点,再访问顶点的每个邻结点,从该点继续深度优先遍历(类似于树的前序遍历)
- 深度优先遍历???——》V1,V2,V5,V3,V6,V4或V1,V4,V6,V3,V5,V2;
|
【题目】

(1)普里姆(Prim)算法
- 基本思想???——》选一个顶点开始,查找与顶点相邻且代价(边值)最小的边的另一个顶点,直到最后。
- 例如:V1作为顶点,V1->V3->V6->V4,V3->V2->V5,连接图中所有的结点即可;
|
(2)克鲁斯卡尔(Kruskal)算法
- 基本思想???——》选择图中最小的边,直到所有结点都连通。
- 例如:第一小边:V1->V3,第二小边:V4->V6,第三小边:V2-V5,第四小边:V3->V6,第五小边:V3->V2,此时所有的结点都连到了一起;
|
(3)算法对比
- 普里姆算法更加注重的是结点,点与点之间距离最短的优先;克鲁斯卡尔算法更加注重的是边,将边排序,最小边排在前面,最大边排在后面;
|
排序算法比较???——》

逐点插入法???——》以第一个数为根节点,之后大的在右,小的在左;
|
【题目】线性表{38,25,74,63,52,48},散列表[0,6],散列函数h(key)=key%7;在散列表上进行等概率成功查找的平均查找长度为( );
解析???——》


|
比较基础的排序算法在最坏情况下的计算时间下界为O( ); |
| |
|
大家给个赞,就是给我最大的鼓励!!!
注意:“赞”位于右上角;
相关文章: