[JavaScript] Tree, 너비 우선 탐색 BFS, 깊이 우선 탐색 DFS

bbio3o·2021년 2월 2일
0
post-thumbnail

Task

--- Directions

  1. Create a node class. The constructor
    should accept an argument that gets assigned
    to the data property and initialize an
    empty array for storing children. The node
    class should have methods 'add' and 'remove'.

  2. Create a tree class. The tree constructor
    should initialize a 'root' property to null.

  3. Implement 'traverseBF' and 'traverseDF'
    on the tree class. Each method should accept a
    function that gets called with each element in the tree

Solution

class Node {
  constructor(data) {
    this.data = data;
    this.children = [];
  }

  add(data) {
    this.children.push(new Node(data));
  }

  remove(data) {
    this.children = this.children.filter(node => {
      return node.data !== data;
    });
  }
}

class Tree {
  constructor() {
    this.root = null;
  }

  traverseBF(fn) {
    const arr = [this.root];

    while (arr.length) {
      const node = arr.shift();

      arr.push(...node.children);
      fn(node);
    }
  }

  traverseDF(fn) {
    const arr = [this.root];

    while (arr.length) {
      const node = arr.shift();

      arr.unshift(...node.children);
      fn(node);
    }
  }
}
profile
그림도 그리는 개발자 🎨👩‍💻

0개의 댓글