剑指 Offer II 106. 二分图

136 阅读1分钟

剑指 Offer II 106. 二分图

二分图 定义:如果能将一个图的节点集合分割成两个独立的子集 A 和 B ,并使图中的每一条边的两个节点一个来自 A 集合,一个来自 B 集合,就将这个图称为 二分图 。

var isBipartite = function (arr) {
    var flag = true;
    var n = arr.length;
    var crr = new Array(n).fill(false);
    var brr = new Array(n).fill(false);
    for (var i = 0; i < n; i++) {
        if (!brr[i]) {
            f(arr, i);
        }
    }
    return flag;
    function f(arr,v){
        if (!flag) return;
        brr[v] = true;
        for (var k of arr[v]) {
            if (!brr[k]) {
                crr[k] = !crr[v];
                f(arr, k);
            } else {
                if (crr[k] == crr[v]) {
                    flag = false;
                }
            }
        }
    }
};