diff --git a/src/data-structures/tree/BinaryTreeNode.js b/src/data-structures/tree/BinaryTreeNode.js index a85e04d2..6d068b8a 100644 --- a/src/data-structures/tree/BinaryTreeNode.js +++ b/src/data-structures/tree/BinaryTreeNode.js @@ -15,23 +15,26 @@ export default class BinaryTreeNode { return this; } - hasLeft() { - return !!this.left; - } - - hasRight() { - return !!this.right; - } - traverseInOrder() { - return Array.prototype.concat( - this.left ? this.left.traverseInOrder() : [null], - [this.value], - this.right ? this.right.traverseInOrder() : [null], - ); + let traverse = []; + + // Add left node. + 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() { - return this.traverseInOrder().filter(value => !!value).toString(); + return this.traverseInOrder().toString(); } } diff --git a/src/data-structures/tree/__test__/BinaryTreeNode.test.js b/src/data-structures/tree/__test__/BinaryTreeNode.test.js index 08e8cfd2..4bf869a1 100644 --- a/src/data-structures/tree/__test__/BinaryTreeNode.test.js +++ b/src/data-structures/tree/__test__/BinaryTreeNode.test.js @@ -10,9 +10,6 @@ describe('BinaryTreeNode', () => { expect(node.left).toBeNull(); expect(node.right).toBeNull(); - expect(node.hasLeft()).toBeFalsy(); - expect(node.hasRight()).toBeFalsy(); - const leftNode = new BinaryTreeNode(1); const rightNode = new BinaryTreeNode(3); const rootNode = new BinaryTreeNode(2); @@ -31,7 +28,7 @@ describe('BinaryTreeNode', () => { const rightNode = new BinaryTreeNode(3); 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'); });