Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit fbfdce0

Browse files
committedApr 2, 2018
Add binary search tree.
1 parent 33816b9 commit fbfdce0

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed
 

‎src/data-structures/tree/BinaryTreeNode.js

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,26 @@ export default class BinaryTreeNode {
1515
return this;
1616
}
1717

18-
hasLeft() {
19-
return !!this.left;
20-
}
18+
traverseInOrder() {
19+
let traverse = [];
2120

22-
hasRight() {
23-
return !!this.right;
24-
}
21+
// Add left node.
22+
if (this.left) {
23+
traverse = traverse.concat(this.left.traverseInOrder());
24+
}
2525

26-
traverseInOrder() {
27-
return Array.prototype.concat(
28-
this.left ? this.left.traverseInOrder() : [null],
29-
[this.value],
30-
this.right ? this.right.traverseInOrder() : [null],
31-
);
26+
// Add root.
27+
traverse.push(this.value);
28+
29+
// Add right node.
30+
if (this.right) {
31+
traverse = traverse.concat(this.right.traverseInOrder());
32+
}
33+
34+
return traverse;
3235
}
3336

3437
toString() {
35-
return this.traverseInOrder().filter(value => !!value).toString();
38+
return this.traverseInOrder().toString();
3639
}
3740
}

‎src/data-structures/tree/__test__/BinaryTreeNode.test.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ describe('BinaryTreeNode', () => {
1010
expect(node.left).toBeNull();
1111
expect(node.right).toBeNull();
1212

13-
expect(node.hasLeft()).toBeFalsy();
14-
expect(node.hasRight()).toBeFalsy();
15-
1613
const leftNode = new BinaryTreeNode(1);
1714
const rightNode = new BinaryTreeNode(3);
1815
const rootNode = new BinaryTreeNode(2);
@@ -31,7 +28,7 @@ describe('BinaryTreeNode', () => {
3128
const rightNode = new BinaryTreeNode(3);
3229
const rootNode = new BinaryTreeNode(2, leftNode, rightNode);
3330

34-
expect(rootNode.traverseInOrder()).toEqual([null, 1, null, 2, null, 3, null]);
31+
expect(rootNode.traverseInOrder()).toEqual([1, 2, 3]);
3532

3633
expect(rootNode.toString()).toBe('1,2,3');
3734
});

0 commit comments

Comments
 (0)
Please sign in to comment.