findNodeAndParent(value, node = this.root, parent = null) {
    if (!node || node.value === value) {
      return { found: node, parent };
    } if (value < node.value) {
      return this.findNodeAndParent(value, node.left, node);
    }
    return this.findNodeAndParent(value, node.right, node);
  }
Recursively finds the node matching the value.
If it doesn't find, it returns the leaf `parent` where the new value should be appended.
@param {any} value Node's value to find
@param {BinaryTreeNode} node first element to start the search (root is default)
@param {BinaryTreeNode} parent keep track of parent (usually filled by recursion)
@returns {object} node and its parent like {node, parent}