1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| function BinaryTree() { var removeNode = function (node, key) { if (node === null) return null;
if (key < node.key) { node.left = removeNode(node.left, key); return node; } else if (key > node.key) { node.right = removeNode(node.right, key); return node; } else { if (node.left === null && node.right === null) { return null; } if (node.left === null) { node = node.right; return node; } else if (node.right === null) { node = node.left; return node; } var temp = findMinNode(node.right); node.key = temp.key; node.right = removeNode(node.right, temp.key); return node; } }
var findMinNode = function (node) { if (node) { while (node && node.left !== null) { node = node.left; } return node; } return null; }
this.remove = function (key) { root = removeNode(root, key); }; }
|