数据结构 图G的广度、深度优先生成树分别怎么画呀?

如题所述

1、首先第一步若节点右左子树,则左链域lchild指示其左孩子(ltag=0),否则,令左链域指示其前驱(ltag=1)。若结点有右子树,则右链域rchild指示其右孩子(rtag=0),否则,令右链域指示其后继(rtag=1)。

2、然后击亅实现这一过程,设指针p指向当前结点,pre始终指向刚刚访问过的结点,即p的前驱,以便于修改pre的后继线索和p的前驱线索。在线索化算法中访问当前结点p来进行处理。

3、最后几是结点p的左指针域为空,则将其标志位置为1,并使p->lchild指向中序前驱结点pre(即左线索化);结点pre的右指针域为空,则将其标志位置为1,并使pre->rchild指向中序后继结点p(即右线索化);将pre指向刚刚访问过的结点p(即pre=p),线索化p的右子树。

扩展资料:

设G=(V,E)是一个图,其中V={v1,v2,…,vn}。G的邻接矩阵是一个具有下列性质的n阶方阵:

对无向图而言,邻接矩阵一定是对称的,而且主对角线一定为零(在此仅讨论无向简单图),副对角线不一定为0,有向图则不一定如此。

在无向图中,任一顶点i的度为第i列(或第i行)所有非零元素的个数,在有向图中顶点i的出度为第i行所有非零元素的个数,而入度为第i列所有非零元素的个数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15

答案请看图。

追问

可以讲一下思路嘛

追答

广度:
访问一个节点,然后把与该节点邻接的节点全部访问完,再依次访问上一步中访问的邻接节点的全部节点。
访问节点 1,然后访问与节点 1 邻接的全部节点,即 2、3、4,然后再依次访问 2、3、4 邻接的节点,先访问 2 邻接的节点 5,全部节点已访问,结束。假设还有个节点 6 只与 3 邻接,那在访问完 2 邻接的全部节点后,还需访问与 3 邻接的节点 6。

深度:
访问一个节点,如果该节点有未访问的邻接节点,则访问与该节点邻接的一个节点,否则任选一个未访问的节点访问。然后再访问一个与上一步中访问的节点邻接的节点。
访问节点1,然后访问与节点1邻接的节点2,然后访问与节点2邻接的节点3,然后访问与节点3邻接的节点4,然后访问与节点4邻接的节点5。

本回答被网友采纳
第2个回答  2019-12-23
深度优先生成树 唯一吗
如果给一图,从一定点出发,那么深度优先生成树的画法唯一吗?也就是这个生成树有左右之分吗

这个不一定唯一,多数时候不唯一,如果某个顶点有多个未访问的邻接点,此时选择不一样的下一个点,结果都不一样
但是对于深度优先的程序而言,因为已经限定了存储结构和算法步骤,此时结果才唯一