typedef struct
{
int arcs[MaxVexNum][MaxVexNum];
int vexnum, arcnum;
} AMGraph;
其中,arc
是一个二维数组,用于表示各个顶点之间的边的关系。vexnum
表示图中顶点的数量,arcnum
表示图中边的数量。
AMGraph graph;
graph.vexnum = 5;
graph.arcnum = 7;
// 初始化邻接矩阵
for (int i = 0; i < graph.vexnum; i++) {
for (int j = 0; j < graph.vexnum; j++) {
graph.arcs[i][j] = 0;
}
}
// 添加边的关系
graph.arcs[0][1] = 1;
graph.arcs[1][0] = 1;
graph.arcs[0][2] = 1;
graph.arcs[2][0] = 1;
graph.arcs[1][2] = 1;
graph.arcs[2][1] = 1;
graph.arcs[3][4] = 1;
graph. Arcs[4][3] = 1;
找节点,然后就可以区分出左右子树,就可以找到左右子树的高度范围
对于指定的N个节点有两个策略,一个是满着排,一个是连成链表型
如果满着排,那么高度就是取对数,如果成链表型高度就是n
初始为有序序列,就是一条左子树链,高度为n
折半就是取当下序列中间元素为根,然后高度变为n/2
如果高度比k小,