我正在尝试实施BST的删除方法,但我无法解决问题

时间:2019-05-14 15:27:41

标签: javascript binary-search-tree

在对我的二叉搜索树中的一个整数值调用delete()之后,该数字仍未从bst中删除,并且未给出错误,因此无法弄清楚问题,谢谢

delete(data) {

  function removeNode(node, data) {
    if (node === null) {
      return node;
    }
    if (data === node.data) {
      if (node.right === null && node.left === null) {
        node = null;
        return node;
      } else if (node.right === null) {
        node = node.left;
        return node
      } else if (node.left === null) {
        node = node.right;
        return node
      } else {
        // node with two leaves
        var tempNode = node.right;
        while (tempNode.left !== null) {
          tempNode = tempNode.left;
        }
        node.data = tempNode.data;
        tempNode = null;
      }

    } else if (data < node.data) {
      node.left = removeNode(node, data);
      return node;
    } else if (data > node.data) {
      removeNode(node.right, data);
      return node;
    }

  }
  this.root = removeNode(this.root, data);
}
}
const mybst = new BST();
mybst.add(20);
mybst.add(25);
console.log(mybst.findMax());
console.log(mybst.findMin());
mybst.delete(25);
console.log(mybst.findMax());

///我希望在这种情况下可以删除25,但是登录mybst.findMax()时我仍然有25。谢谢。

0 个答案:

没有答案