hszy00232/developExperience

算法练习 - 广度优先查找算法(BFS)

Opened this issue · 0 comments

const graph = {};
graph["you"] = ["alice", "bob", "claire"];
graph["bob"] = ["anuj", "peggy"];
graph["alice"] = ["peggy"];
graph["claire"] = ["thom", "jonny"];
graph["anuj"] = [];
graph["peggy"] = [];
graph["thom"] = [];
graph["jonny"] = [];

/**
 * 确定一个人是否是卖家
 * @param {string} name 
 * @returns {boolean} 
 */
function personIsSeller(name) {
    return name.slice(-1) === 'm';
}

/**
 * 查找卖芒果的人
 * @param {string} name 
 * @returns {boolean} 查询结果
 */
function search(name) {
    let search_queue = [];
    search_queue = search_queue.concat(graph[name]);
    const searched = [];
    while (search_queue.length) {
        let person = search_queue.shift();
        if (searched.indexOf(person) === -1) {
            if (personIsSeller(person)) {
                console.log(person + ' is a mango seller!');
                return true;
            }
            search_queue = search_queue.concat(graph[person]);
            searched.push(person);
        }
    }
    return false;
}


search('you');