图的构建方法(Java)
不管是LeetCode中 还是在实际的OA中 我们都会遇到许多关于图的问题 而很多问题中 构建合适的图是第一步 也是非常重要的一步。
那么有哪些图的构建方法呢?
用HashMap<Node, List> map来表示Node以及他的邻居节点。这种表示方式可以表示无向图和有向图,但是要注意在构建无向图的时候 每条边要加两次。(当我们需要字典序相关的排序 可以把写作 HashMap<Node, PriorityQueue> 这样就不用自己每一次都自己手动排序比较了)
或者用2D array: 邻接表 虽然浪费了点空间 而且这种方式可以用来构建有权重的有向图或者无向图。
或者有的时候为了省空间,用 List[] or List<int[]>
关于其他的辅助储存:
比如说:
BFS中我们经常需要使用visited来判断我们是不是走过了这个节点。我们可以用数组来存visited,可以用hashset

浙公网安备 33010602011771号