Java教程

JavaScript 实现链表的深度优先和广度优先搜索

本文主要是介绍JavaScript 实现链表的深度优先和广度优先搜索,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JavaScript 实现链表的深度优先和广度优先搜索

  • 深度优先
  • 广度优先

深度优先

class List {
    constructor(value) {
        this.root = null;
        this.child = [];
        this.value = value;
    }

    // 设置左节点
    setChild = (nodeList) => {
        this.child.push(...nodeList);
    }

    // 设置父节点
    setRoot = (node) => {
        this.root = node;
    }

    // 获取第i个子节点
    getChild = (i) => {
        return this.child[i];
    }

    // 获取父节点
    getRoot = () => {
        return this.root;
    }

    // 设置值
    setValue = (value) => {
        this.value = value;
    }

    // 深度优先算法 DFS
    DFS = () => {
        let result = [];
        const search = (kid) => {
            result.push(kid.value);
            kid.child.length > 0 && kid.child.forEach(item => {
                search(item);
            })
        }
        search(this);
        return result.join(',');
    }
}

let node1 = new List(0);
let node2 = new List(1);
let node3 = new List(2);
let node4 = new List(3);
let node5 = new List(4);
let node6 = new List(5);


node1.setChild([node2, node5]);
node2.setChild([node3, node4]);
node5.setChild([node6]);
console.log(node1.DFS());

广度优先

之后补充
这篇关于JavaScript 实现链表的深度优先和广度优先搜索的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!