Add binary search tree.

This commit is contained in:
Oleksii Trekhleb 2018-04-02 20:24:51 +03:00
parent 33816b9919
commit fbfdce030e
2 changed files with 18 additions and 18 deletions

View File

@ -15,23 +15,26 @@ export default class BinaryTreeNode {
return this; return this;
} }
hasLeft() {
return !!this.left;
}
hasRight() {
return !!this.right;
}
traverseInOrder() { traverseInOrder() {
return Array.prototype.concat( let traverse = [];
this.left ? this.left.traverseInOrder() : [null],
[this.value], // Add left node.
this.right ? this.right.traverseInOrder() : [null], if (this.left) {
); traverse = traverse.concat(this.left.traverseInOrder());
}
// Add root.
traverse.push(this.value);
// Add right node.
if (this.right) {
traverse = traverse.concat(this.right.traverseInOrder());
}
return traverse;
} }
toString() { toString() {
return this.traverseInOrder().filter(value => !!value).toString(); return this.traverseInOrder().toString();
} }
} }

View File

@ -10,9 +10,6 @@ describe('BinaryTreeNode', () => {
expect(node.left).toBeNull(); expect(node.left).toBeNull();
expect(node.right).toBeNull(); expect(node.right).toBeNull();
expect(node.hasLeft()).toBeFalsy();
expect(node.hasRight()).toBeFalsy();
const leftNode = new BinaryTreeNode(1); const leftNode = new BinaryTreeNode(1);
const rightNode = new BinaryTreeNode(3); const rightNode = new BinaryTreeNode(3);
const rootNode = new BinaryTreeNode(2); const rootNode = new BinaryTreeNode(2);
@ -31,7 +28,7 @@ describe('BinaryTreeNode', () => {
const rightNode = new BinaryTreeNode(3); const rightNode = new BinaryTreeNode(3);
const rootNode = new BinaryTreeNode(2, leftNode, rightNode); const rootNode = new BinaryTreeNode(2, leftNode, rightNode);
expect(rootNode.traverseInOrder()).toEqual([null, 1, null, 2, null, 3, null]); expect(rootNode.traverseInOrder()).toEqual([1, 2, 3]);
expect(rootNode.toString()).toBe('1,2,3'); expect(rootNode.toString()).toBe('1,2,3');
}); });