树与森林与图

167 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

二叉排序树

又叫二叉查找树或者二叉判断树(左小右大)

定义:

(1)若左子树非空,则左子树上所有结点关键字值均小于根节点的关键字值。
(2)若右子树非空,则右子树上所有结点关键字值均大于根节点的关键字值。
(3)左、右子树本身也分别是一颗二叉排序树。

image.png

二叉排序树的删除(重难点)

image.png

查找

成功=(层数 * 成功个数)的和/总成功个数 image.png 失败

image.png

image.png

平衡二叉树

任意结点的左右子树高度差的绝对值不超过1,且子树都是平衡树。定义结点的左子树和右子树的高度差为该结点的平衡因子,平衡因子的值可能是-1、0、1。

image.png

平衡二叉树的插入(4种)

image.png

image.png

image.png

image.png

image.png

哈夫曼树

带权路径长度(WPL)最小的二叉树称为哈夫曼树,,也称为最优二叉树。 权重 * 路径长度 image.png

image.png

简单图:不存在重复边、不存在顶点到自身的边。

多重图:图中某两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联。

完全图:在无向图中,若任意两个顶点之间都存在边。

image.png

image.png

图结构的存储

四种

邻接矩阵

用一个一维数组存储图中顶点的信息,用一个二维数组存储图中边的信息(即各顶点之间的邻接关系),存储顶点之间邻接关系的二维数组称为邻接矩阵。

image.png

image.png 无穷:无路径、无权值。数值:有路径、有权值。 网的邻接矩阵到不了用无穷。

邻接表

image.png

邻接多重表

是无向图的一种链式存储结构。 箭头指向节点无后继结点是终止。

image.png

image.png

十字链表

有向图的一种链式存储结构 (画的时候先画出度后画入度)

image.png

image.png

总结:邻接表、十字链表都是有向图的存储方式、而邻接多重表是无向图的存储方式、邻接矩阵即可以是有向的也可以是无向的。
邻接矩阵要注意不带权的时候,1表示两个点连通,0表示不连通。
带权的时候,连通的两点,矩阵中的值为两点间的权值;点和点自身标为0;不连通的两点的值为无穷。
邻接多重表的边表是从结点的序号开始、一个结点一个结点画。
十字链表是从顶点表开始分为入表和出表两种、先画出表、再入表。

图的遍历

深度优先遍历

深究到底

image.png

广度优先遍历

广撒网

image.png

图遍历的生成树

image.png

image.png

最小生成树

普里姆算法:最小连通

image.png 克鲁斯卡尔:最短的

image.png

最短路径

迪杰斯特拉算法能得出最短路径的最优解

image.png

image.png abd指向g的应该是无穷,这里写错了。