Advertisement

LeetCode上的树与图的深度优先搜索(DFS)和广度优先搜索(BFS)

阅读量:

参考:
lzh的笔记

树与图的存储结构:邻接表

鉴于树结构属于图的一种特殊形式,因此在存储树时同样采用邻接表或邻接图的方式。邻接表的定义是针对图中的每一个节点,通过单链表的形式来记录其相邻的节点信息。

在这里插入图片描述

为表示邻接点,我们需要使用h[], e[], ne[], idx这几个变量:

  • h[v] : 表示与节点v相关的链表的起始节点需特别注意初始化时应设置为-1
  • e[i] : 用于存储第i个节点对应的值v(实现下标与值之间的映射关系)
  • ne[i] : 在邻接表链表中,表示i节点的后续节点
  • idx : 记录当前处理到的节点索引,当所有边都插入完毕后,idx即代表总节点数量

在将节点b插入到节点a之后的操作如下:
此时idx表示当前处理的节点即为b,因此e[idx] = b
采用头插法将该节点插入到a对应的邻接表中,由于h[a]是a的邻接表起始位置,因此ne[idx] = h[a]
最终,该邻接表的起始位置更新为新插入的节点b

复制代码
    private static void add(int a,

全部评论 (0)

还没有任何评论哟~