mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-09-21 00:34:01 +08:00
Add binary search tree.
This commit is contained in:
parent
33816b9919
commit
fbfdce030e
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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');
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user