* dfs() {
    const stack = new Stack();

    stack.add(this.root);

    while (!stack.isEmpty()) {
      const node = stack.remove();
      yield node;

      if (node.right) { stack.add(node.right); }
      if (node.left) { stack.add(node.left); }
    }
  }
Depth-first search for a tree (always starting from the root element)
@see preOrderTraversal Similar results to the pre-order transversal.
@yields {BinaryTreeNode}