fix(curriculum): use object.assign to prevent overwriting prototypes if user uses class instead of function (#37648)

* fix: use object.assign to prevent overwriting when using class

* fix: remove non-used isBinarySearchTree method
This commit is contained in:
Randell Dawson
2019-12-13 13:04:05 -08:00
committed by Tom
parent 63b9be8faf
commit 85e7fe45d5
12 changed files with 353 additions and 395 deletions

View File

@ -64,50 +64,24 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
isBinarySearchTree() { BinarySearchTree.prototype,
if (this.root == null) { {
return null; inOrder() {
} else { if (!this.root) {
var check = true; return null;
function checkTree(node) {
if (node.left != null) {
var left = node.left;
if (left.value > node.value) {
check = false;
} else {
checkTree(left);
}
}
if (node.right != null) {
var right = node.right;
if (right.value < node.value) {
check = false;
} else {
checkTree(right);
}
}
} }
checkTree(this.root); var result = new Array();
return check; function traverseInOrder(node) {
node.left && traverseInOrder(node.left);
result.push(node.value);
node.right && traverseInOrder(node.right);
}
traverseInOrder(this.root);
return result;
} }
} }
}; );
BinarySearchTree.prototype = {
inOrder() {
if (!this.root) {
return null;
}
var result = new Array();
function traverseInOrder(node) {
node.left && traverseInOrder(node.left);
result.push(node.value);
node.right && traverseInOrder(node.right);
}
traverseInOrder(this.root);
return result;
}
};
``` ```
</div> </div>
@ -133,7 +107,6 @@ function BinarySearchTree() {
const searchTree = function(current) { const searchTree = function(current) {
if (current.value > element) { if (current.value > element) {
if (current.left) { if (current.left) {
//si existe
return searchTree(current.left); return searchTree(current.left);
} else { } else {
current.left = new Node(element); current.left = new Node(element);

View File

@ -61,36 +61,39 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
add: function(value) { BinarySearchTree.prototype,
var node = this.root; {
if (node == null) { add: function(value) {
this.root = new Node(value); var node = this.root;
return; if (node == null) {
} else { this.root = new Node(value);
function searchTree(node) { return;
if (value < node.value) { } else {
if (node.left == null) { function searchTree(node) {
node.left = new Node(value); if (value < node.value) {
return; if (node.left == null) {
} else if (node.left != null) { node.left = new Node(value);
return searchTree(node.left); return;
} else if (node.left != null) {
return searchTree(node.left);
}
} else if (value > node.value) {
if (node.right == null) {
node.right = new Node(value);
return;
} else if (node.right != null) {
return searchTree(node.right);
}
} else {
return null;
} }
} else if (value > node.value) {
if (node.right == null) {
node.right = new Node(value);
return;
} else if (node.right != null) {
return searchTree(node.right);
}
} else {
return null;
} }
return searchTree(node);
} }
return searchTree(node);
} }
} }
}; );
``` ```
</div> </div>

View File

@ -68,7 +68,11 @@ var DoublyLinkedList = function() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
DoublyLinkedList.prototype = {
DoublyLinkedList.prototype = Object.assign(
DoublyLinkedList.prototype,
{
print() { print() {
if (this.head == null) { if (this.head == null) {
return null; return null;
@ -97,7 +101,7 @@ DoublyLinkedList.prototype = {
return result; return result;
}; };
} }
}; });
``` ```
</div> </div>

View File

@ -68,81 +68,57 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
add: function(value) { BinarySearchTree.prototype,
var node = this.root; {
if (node == null) { add: function(value) {
this.root = new Node(value); var node = this.root;
return; if (node == null) {
} else { this.root = new Node(value);
function searchTree(node) { return;
if (value < node.value) { } else {
if (node.left == null) { function searchTree(node) {
node.left = new Node(value); if (value < node.value) {
return; if (node.left == null) {
} else if (node.left != null) { node.left = new Node(value);
return searchTree(node.left); return;
} } else if (node.left != null) {
} else if (value > node.value) { return searchTree(node.left);
if (node.right == null) { }
node.right = new Node(value); } else if (value > node.value) {
return; if (node.right == null) {
} else if (node.right != null) { node.right = new Node(value);
return searchTree(node.right); return;
} } else if (node.right != null) {
} else { return searchTree(node.right);
return null; }
}
}
return searchTree(node);
}
},
inorder: function() {
if (this.root == null) {
return null;
} else {
var result = new Array();
function traverseInOrder(node) {
if (node.left != null) {
traverseInOrder(node.left);
}
result.push(node.value);
if (node.right != null) {
traverseInOrder(node.right);
}
}
traverseInOrder(this.root);
return result;
}
},
isBinarySearchTree() {
if (this.root == null) {
return null;
} else {
var check = true;
function checkTree(node) {
if (node.left != null) {
var left = node.left;
if (left.value > node.value) {
check = false;
} else { } else {
checkTree(left); return null;
}
}
if (node.right != null) {
var right = node.right;
if (right.value < node.value) {
check = false;
} else {
checkTree(right);
} }
} }
return searchTree(node);
}
},
inorder: function() {
if (this.root == null) {
return null;
} else {
var result = new Array();
function traverseInOrder(node) {
if (node.left != null) {
traverseInOrder(node.left);
}
result.push(node.value);
if (node.right != null) {
traverseInOrder(node.right);
}
}
traverseInOrder(this.root);
return result;
} }
checkTree(this.root);
return check;
} }
} }
}; );
``` ```
</div> </div>

View File

@ -106,81 +106,57 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
add: function(value) { BinarySearchTree.prototype,
var node = this.root; {
if (node == null) { add: function(value) {
this.root = new Node(value); var node = this.root;
return; if (node == null) {
} else { this.root = new Node(value);
function searchTree(node) { return;
if (value < node.value) { } else {
if (node.left == null) { function searchTree(node) {
node.left = new Node(value); if (value < node.value) {
return; if (node.left == null) {
} else if (node.left != null) { node.left = new Node(value);
return searchTree(node.left); return;
} } else if (node.left != null) {
} else if (value > node.value) { return searchTree(node.left);
if (node.right == null) { }
node.right = new Node(value); } else if (value > node.value) {
return; if (node.right == null) {
} else if (node.right != null) { node.right = new Node(value);
return searchTree(node.right); return;
} } else if (node.right != null) {
} else { return searchTree(node.right);
return null; }
}
}
return searchTree(node);
}
},
inorder: function() {
if (this.root == null) {
return null;
} else {
var result = new Array();
function traverseInOrder(node) {
if (node.left != null) {
traverseInOrder(node.left);
}
result.push(node.value);
if (node.right != null) {
traverseInOrder(node.right);
}
}
traverseInOrder(this.root);
return result;
}
},
isBinarySearchTree() {
if (this.root == null) {
return null;
} else {
var check = true;
function checkTree(node) {
if (node.left != null) {
var left = node.left;
if (left.value > node.value) {
check = false;
} else { } else {
checkTree(left); return null;
}
}
if (node.right != null) {
var right = node.right;
if (right.value < node.value) {
check = false;
} else {
checkTree(right);
} }
} }
return searchTree(node);
}
},
inorder: function() {
if (this.root == null) {
return null;
} else {
var result = new Array();
function traverseInOrder(node) {
if (node.left != null) {
traverseInOrder(node.left);
}
result.push(node.value);
if (node.right != null) {
traverseInOrder(node.right);
}
}
traverseInOrder(this.root);
return result;
} }
checkTree(this.root);
return check;
} }
} }
}; );
``` ```
</div> </div>

View File

@ -125,81 +125,84 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
add: function(value) { BinarySearchTree.prototype,
var node = this.root; {
if (node == null) { add: function(value) {
this.root = new Node(value); var node = this.root;
return; if (node == null) {
} else { this.root = new Node(value);
function searchTree(node) { return;
if (value < node.value) { } else {
if (node.left == null) { function searchTree(node) {
node.left = new Node(value); if (value < node.value) {
return; if (node.left == null) {
} else if (node.left != null) { node.left = new Node(value);
return searchTree(node.left); return;
} } else if (node.left != null) {
} else if (value > node.value) { return searchTree(node.left);
if (node.right == null) { }
node.right = new Node(value); } else if (value > node.value) {
return; if (node.right == null) {
} else if (node.right != null) { node.right = new Node(value);
return searchTree(node.right); return;
} } else if (node.right != null) {
} else { return searchTree(node.right);
return null; }
}
}
return searchTree(node);
}
},
inorder: function() {
if (this.root == null) {
return null;
} else {
var result = new Array();
function traverseInOrder(node) {
if (node.left != null) {
traverseInOrder(node.left);
}
result.push(node.value);
if (node.right != null) {
traverseInOrder(node.right);
}
}
traverseInOrder(this.root);
return result;
}
},
isBinarySearchTree() {
if (this.root == null) {
return null;
} else {
var check = true;
function checkTree(node) {
if (node.left != null) {
var left = node.left;
if (left.value > node.value) {
check = false;
} else { } else {
checkTree(left); return null;
}
}
if (node.right != null) {
var right = node.right;
if (right.value < node.value) {
check = false;
} else {
checkTree(right);
} }
} }
return searchTree(node);
}
},
inorder: function() {
if (this.root == null) {
return null;
} else {
var result = new Array();
function traverseInOrder(node) {
if (node.left != null) {
traverseInOrder(node.left);
}
result.push(node.value);
if (node.right != null) {
traverseInOrder(node.right);
}
}
traverseInOrder(this.root);
return result;
}
},
isBinarySearchTree() {
if (this.root == null) {
return null;
} else {
var check = true;
function checkTree(node) {
if (node.left != null) {
var left = node.left;
if (left.value > node.value) {
check = false;
} else {
checkTree(left);
}
}
if (node.right != null) {
var right = node.right;
if (right.value < node.value) {
check = false;
} else {
checkTree(right);
}
}
}
checkTree(this.root);
return check;
} }
checkTree(this.root);
return check;
} }
} }
}; );
``` ```
</div> </div>

View File

@ -66,13 +66,10 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
add: function(value) { BinarySearchTree.prototype,
var node = this.root; {
if (node == null) { add: function(value) {
this.root = new Node(value);
return;
} else {
function searchTree(node) { function searchTree(node) {
if (value < node.value) { if (value < node.value) {
if (node.left == null) { if (node.left == null) {
@ -92,10 +89,17 @@ BinarySearchTree.prototype = {
return null; return null;
} }
} }
return searchTree(node);
var node = this.root;
if (node == null) {
this.root = new Node(value);
return;
} else {
return searchTree(node);
}
} }
} }
}; );
``` ```
</div> </div>

View File

@ -61,13 +61,10 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
add: function(value) { BinarySearchTree.prototype,
var node = this.root; {
if (node == null) { add: function(value) {
this.root = new Node(value);
return;
} else {
function searchTree(node) { function searchTree(node) {
if (value < node.value) { if (value < node.value) {
if (node.left == null) { if (node.left == null) {
@ -87,10 +84,17 @@ BinarySearchTree.prototype = {
return null; return null;
} }
} }
return searchTree(node);
var node = this.root;
if (node == null) {
this.root = new Node(value);
return;
} else {
return searchTree(node);
}
} }
} }
}; );
``` ```
</div> </div>

View File

@ -58,54 +58,58 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
BinarySearchTree.prototype,
{
add: function(value) { add: function(value) {
var node = this.root; function searchTree(node) {
if (node == null) { if (value < node.value) {
this.root = new Node(value); if (node.left == null) {
return; node.left = new Node(value);
return;
} else if (node.left != null) {
return searchTree(node.left)
};
} else if (value > node.value) {
if (node.right == null) {
node.right = new Node(value);
return;
} else if (node.right != null) {
return searchTree(node.right);
};
} else { } else {
function searchTree(node) { return null;
if (value < node.value) {
if (node.left == null) {
node.left = new Node(value);
return;
} else if (node.left != null) {
return searchTree(node.left)
};
} else if (value > node.value) {
if (node.right == null) {
node.right = new Node(value);
return;
} else if (node.right != null) {
return searchTree(node.right);
};
} else {
return null;
};
};
return searchTree(node);
}; };
}
var node = this.root;
if (node == null) {
this.root = new Node(value);
return;
} else {
return searchTree(node);
};
}, },
inorder: function() { inorder: function() {
if (this.root == null) { if (this.root == null) {
return null; return null;
} else { } else {
var result = new Array(); var result = new Array();
function traverseInOrder(node) { function traverseInOrder(node) {
if (node.left != null) { if (node.left != null) {
traverseInOrder(node.left); traverseInOrder(node.left);
}; };
result.push(node.value); result.push(node.value);
if (node.right != null) { if (node.right != null) {
traverseInOrder(node.right); traverseInOrder(node.right);
}; };
} }
traverseInOrder(this.root); traverseInOrder(this.root);
return result; return result;
}; };
} }
}; }
);
``` ```
</div> </div>

View File

@ -63,52 +63,55 @@ var DoublyLinkedList = function() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
DoublyLinkedList.prototype = { DoublyLinkedList.prototype = Object.assign(
add(data) { DoublyLinkedList.prototype,
if (this.head == null) { {
this.head = new Node(data, null); add(data) {
this.tail = this.head; if (this.head == null) {
} else { this.head = new Node(data, null);
var node = this.head; this.tail = this.head;
var prev = null; } else {
while (node.next != null) { var node = this.head;
prev = node; var prev = null;
node = node.next; while (node.next != null) {
prev = node;
node = node.next;
};
var newNode = new Node(data, node);
node.next = newNode;
this.tail = newNode;
}; };
var newNode = new Node(data, node); },
node.next = newNode; print() {
this.tail = newNode; if (this.head == null) {
}; return null;
}, } else {
print() { var result = new Array();
if (this.head == null) { var node = this.head;
return null; while (node.next != null) {
} else { result.push(node.data);
var result = new Array(); node = node.next;
var node = this.head; };
while (node.next != null) {
result.push(node.data); result.push(node.data);
node = node.next; return result;
}; };
result.push(node.data); },
return result; printReverse() {
}; if (this.tail == null) {
}, return null;
printReverse() { } else {
if (this.tail == null) { var result = new Array();
return null; var node = this.tail;
} else { while (node.prev != null) {
var result = new Array(); result.push(node.data);
var node = this.tail; node = node.prev;
while (node.prev != null) { };
result.push(node.data); result.push(node.data);
node = node.prev; return result;
}; };
result.push(node.data); }
return result;
};
} }
}; );
``` ```
</div> </div>

View File

@ -64,13 +64,10 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
add: function(value) { BinarySearchTree.prototype,
var node = this.root; {
if (node == null) { add: function(value) {
this.root = new Node(value);
return;
} else {
function searchTree(node) { function searchTree(node) {
if (value < node.value) { if (value < node.value) {
if (node.left == null) { if (node.left == null) {
@ -90,10 +87,16 @@ BinarySearchTree.prototype = {
return null; return null;
} }
} }
return searchTree(node); var node = this.root;
if (node == null) {
this.root = new Node(value);
return;
} else {
return searchTree(node);
}
} }
} }
}; );
``` ```
</div> </div>

View File

@ -76,13 +76,10 @@ function BinarySearchTree() {
<div id='js-teardown'> <div id='js-teardown'>
```js ```js
BinarySearchTree.prototype = { BinarySearchTree.prototype = Object.assign(
add: function(value) { BinarySearchTree.prototype,
var node = this.root; {
if (node == null) { add: function(value) {
this.root = new Node(value);
return;
} else {
function searchTree(node) { function searchTree(node) {
if (value < node.value) { if (value < node.value) {
if (node.left == null) { if (node.left == null) {
@ -102,10 +99,18 @@ BinarySearchTree.prototype = {
return null; return null;
} }
} }
return searchTree(node);
var node = this.root;
if (node == null) {
this.root = new Node(value);
return;
} else {
return searchTree(node);
}
} }
} }
}; );
``` ```
</div> </div>