https://www.jianshu.com/p/2226dbe98e06
dfs思路,用一个stack,将某一个节点进栈push(),while(!stack.empty()),将stack中的节点出栈pop(),如果该节点有邻接节点,则再将邻接节点进栈。
bfs思路,用一个队列queue,将某个节点进入队列offer(), while (!queue.isEmpty()), 将queue中的节点出队列poll(),如果该节点有邻接节点,则再将邻接节点进入队列offer()。
class Solution {
public boolean isBipartite(int[][] graph) {
//思路:DFS: 依次染相反的颜色, 如果节点之前被染过色, 那么查看是否有冲突, 有冲突就返回False
//栈 DFS
Stack<Integer> stack = new Stack