摘要:
8.12、有向无环图(DAG)、AOV网、拓扑排序 有向无环图(DAG) 若一个有向图中不存在环,则称为有向无环图,简称DAG图(Directed Acyclic Graph). AOV网 AOV网(Activity Vertex NetWork,用顶点表示活动的网),用DAG图(有向无环图)表示一 阅读全文
摘要:
8.9、最短生成路径-BFS算法 BFS算法只能处理无权图 ==BFS算法的基本思想== ==代码实现== #include <stdio.h> #include <stdlib.h> #include<math.h> #define MaxSize 100 #define MaxInteger 3 阅读全文
摘要:
8.8、最小生成树 连通图的生成树是包含图中全部顶点的一个极小连通子图;若图中顶点数为n,则它的生成树含有$n-1$条边。 ==最小生成树== 对于一个带权连通无向图G=(V,E),生成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为图G的所有生产树的集合,若==T为R中边的权值之和 阅读全文
摘要:
8.6、图的广度优先遍历 找到与顶点相邻的所有顶点, 标记哪些顶点被访问过 需要一个辅助队列 #include <stdio.h> #include <stdlib.h> #include<math.h> #define MaxSize 100 #define boolean int #define 阅读全文
摘要:
8、图 8.1、图的概念和定义 图G由==顶点集V==和==边集E==组成,记为G=(V,E),其中V(G)表示图G中定点的有限非空集;E(G)表示图G中顶点之间的关系(边)的集合。若$V = ${$V_1,V_2,V_3...V_n$},则用==|V|==表示图G的==顶点个数==,也称==图G的 阅读全文
摘要:
7.7、二叉树、树、森林 定义树可以使用,孩子兄弟表示法,做指针表示孩子,右指针表示树 typedef struct CSNode{ ElemType data; struct CSNode *firstchilde,*nextsibling;//第一个为孩子,第二个为兄弟 }CSNOde,*CST 阅读全文
摘要:
7.9、平衡二叉树(Balanced Binary Tree) 简称平衡树(AVL树)—— 树上任一结点的左子树和右子树的高度只差不会超过1 结点的平衡因子 = 左子树高度 - 右子树高度 得到:平衡二叉树的结点的平衡因子只能为$-1、0、1$ ==最小不平衡树(LL)== ==最小不平衡树(RR) 阅读全文
摘要:
7.8、二叉排序树(BST) 二叉排序树又称二叉查找树 左子树上所有结点的值都小于根结点的值 右子树上所有结点的值都大于根结点的值 左子树和右子树又是一颗二叉排序树 左子树的结点值 < 根结点值 < 右子树的结点值 ==插入的数据的递归实现== #include <stdio.h> #include 阅读全文
摘要:
7.6、线索二叉树 由于二叉树结构中各种遍历(中序、前序、后序、层次)不知道结点的前驱和后继,可以利用那些没有孩子的结点的指针指向它的前驱和后继;没有前驱或者后继就指向NULL 让 ==左孩子指向前驱 右孩子指向后继== 如果在存储上,需要定义两个变量来表示这个结点指向的是==前驱和后继==还是== 阅读全文
摘要:
7.5、二叉树的遍历 先序遍历:根左右(NLR) 中序遍历:左根右(LNR) 后序遍历:左右根(LRN) 层次遍历:一层从左到右遍历 ==代码实现== //访问结点 void Vist(TreeNode *node){ printf("%d , ",node->data); } //先序遍历 voi 阅读全文