@@ -8,6 +8,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
8
8
} ;
9
9
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
10
10
const BinarySearchTree_1 = __importStar ( require ( "./BinarySearchTree" ) ) ;
11
+ function populateTree ( tree ) {
12
+ BST . insert ( 5 ) ;
13
+ BST . insert ( 3 ) ;
14
+ BST . insert ( 8 ) ;
15
+ BST . insert ( 4 ) ;
16
+ BST . insert ( 6 ) ;
17
+ BST . insert ( 1 ) ;
18
+ BST . insert ( 9 ) ;
19
+ }
11
20
let BST = new BinarySearchTree_1 . default ( ) ;
12
21
beforeEach ( ( ) => BST = new BinarySearchTree_1 . default ( ) ) ;
13
22
describe ( 'basic binary search tree functionality' , ( ) => {
@@ -34,21 +43,62 @@ describe('basic binary search tree functionality', () => {
34
43
test ( 'Insert method exists' , ( ) => {
35
44
expect ( typeof BST . insert ) . toBe ( 'function' ) ;
36
45
} ) ;
46
+ } ) ;
47
+ describe ( 'insertion' , ( ) => {
37
48
test ( 'insert method works by inserting in order (left to right ascending)' , ( ) => {
38
49
var _a , _b , _c , _d , _e , _f , _g , _h , _j , _k , _l , _m , _o , _p , _q , _r , _s ;
39
- BST . insert ( 5 ) ;
50
+ populateTree ( BST ) ;
40
51
expect ( ( _a = BST . root ) === null || _a === void 0 ? void 0 : _a . value ) . toBe ( 5 ) ;
41
- BST . insert ( 3 ) ;
42
52
expect ( ( _c = ( _b = BST . root ) === null || _b === void 0 ? void 0 : _b . left ) === null || _c === void 0 ? void 0 : _c . value ) . toBe ( 3 ) ;
43
- BST . insert ( 7 ) ;
44
- expect ( ( _e = ( _d = BST . root ) === null || _d === void 0 ? void 0 : _d . right ) === null || _e === void 0 ? void 0 : _e . value ) . toBe ( 7 ) ;
45
- BST . insert ( 4 ) ;
53
+ expect ( ( _e = ( _d = BST . root ) === null || _d === void 0 ? void 0 : _d . right ) === null || _e === void 0 ? void 0 : _e . value ) . toBe ( 8 ) ;
46
54
expect ( ( _h = ( _g = ( _f = BST . root ) === null || _f === void 0 ? void 0 : _f . left ) === null || _g === void 0 ? void 0 : _g . right ) === null || _h === void 0 ? void 0 : _h . value ) . toBe ( 4 ) ;
47
- BST . insert ( 6 ) ;
48
55
expect ( ( _l = ( _k = ( _j = BST . root ) === null || _j === void 0 ? void 0 : _j . right ) === null || _k === void 0 ? void 0 : _k . left ) === null || _l === void 0 ? void 0 : _l . value ) . toBe ( 6 ) ;
49
- BST . insert ( 1 ) ;
50
56
expect ( ( _p = ( _o = ( _m = BST . root ) === null || _m === void 0 ? void 0 : _m . left ) === null || _o === void 0 ? void 0 : _o . left ) === null || _p === void 0 ? void 0 : _p . value ) . toBe ( 1 ) ;
51
- BST . insert ( 8 ) ;
52
- expect ( ( _s = ( _r = ( _q = BST . root ) === null || _q === void 0 ? void 0 : _q . right ) === null || _r === void 0 ? void 0 : _r . right ) === null || _s === void 0 ? void 0 : _s . value ) . toBe ( 8 ) ;
57
+ expect ( ( _s = ( _r = ( _q = BST . root ) === null || _q === void 0 ? void 0 : _q . right ) === null || _r === void 0 ? void 0 : _r . right ) === null || _s === void 0 ? void 0 : _s . value ) . toBe ( 9 ) ;
58
+ } ) ;
59
+ test ( `can insert multiple nodes of the same value and they'll bubble down the right` , ( ) => {
60
+ var _a , _b , _c , _d , _e , _f ;
61
+ BST . insert ( 1 ) ;
62
+ BST . insert ( 1 ) ;
63
+ BST . insert ( 1 ) ;
64
+ expect ( ( _a = BST . root ) === null || _a === void 0 ? void 0 : _a . value ) . toBe ( 1 ) ;
65
+ expect ( ( _c = ( _b = BST . root ) === null || _b === void 0 ? void 0 : _b . right ) === null || _c === void 0 ? void 0 : _c . value ) . toBe ( 1 ) ;
66
+ expect ( ( _f = ( _e = ( _d = BST . root ) === null || _d === void 0 ? void 0 : _d . right ) === null || _e === void 0 ? void 0 : _e . right ) === null || _f === void 0 ? void 0 : _f . value ) . toBe ( 1 ) ;
67
+ } ) ;
68
+ } ) ;
69
+ describe ( 'binary search' , ( ) => {
70
+ test ( 'searching for a value in a empty tree returns null' , ( ) => {
71
+ expect ( BST . find ( 1 ) ) . toBeNull ( ) ;
72
+ } ) ;
73
+ test ( 'searching for a value which is the root value' , ( ) => {
74
+ var _a ;
75
+ BST . insert ( 1 ) ;
76
+ expect ( ( _a = BST . find ( 1 ) ) === null || _a === void 0 ? void 0 : _a . value ) . toBe ( 1 ) ;
77
+ } ) ;
78
+ test ( 'searching a populated tree' , ( ) => {
79
+ var _a , _b , _c , _d , _e , _f , _g ;
80
+ populateTree ( BST ) ;
81
+ expect ( ( _a = BST . find ( 1 ) ) === null || _a === void 0 ? void 0 : _a . value ) . toBe ( 1 ) ;
82
+ expect ( BST . find ( 2 ) ) . toBeNull ( ) ;
83
+ expect ( ( _b = BST . find ( 3 ) ) === null || _b === void 0 ? void 0 : _b . value ) . toBe ( 3 ) ;
84
+ expect ( ( _c = BST . find ( 4 ) ) === null || _c === void 0 ? void 0 : _c . value ) . toBe ( 4 ) ;
85
+ expect ( ( _d = BST . find ( 5 ) ) === null || _d === void 0 ? void 0 : _d . value ) . toBe ( 5 ) ;
86
+ expect ( ( _e = BST . find ( 6 ) ) === null || _e === void 0 ? void 0 : _e . value ) . toBe ( 6 ) ;
87
+ expect ( BST . find ( 7 ) ) . toBeNull ( ) ;
88
+ expect ( ( _f = BST . find ( 8 ) ) === null || _f === void 0 ? void 0 : _f . value ) . toBe ( 8 ) ;
89
+ expect ( ( _g = BST . find ( 9 ) ) === null || _g === void 0 ? void 0 : _g . value ) . toBe ( 9 ) ;
90
+ } ) ;
91
+ } ) ;
92
+ describe ( 'depth first search' , ( ) => {
93
+ test ( 'can log an empty tree' , ( ) => {
94
+ } ) ;
95
+ test ( 'can log a populated tree in ascending order' , ( ) => {
96
+ populateTree ( BST ) ;
97
+ expect ( BST . DFS ( ) ) . toEqual ( [ 1 , 3 , 4 , 5 , 6 , 8 , 9 ] ) ;
98
+ } ) ;
99
+ test ( 'can log a populated tree in descending order' , ( ) => {
100
+ populateTree ( BST ) ;
101
+ console . log ( BST . DFS ( BST . root , { order : 'descending' } ) ) ;
102
+ expect ( BST . DFS ( BST . root , { order : 'descending' } ) ) . toEqual ( [ 9 , 8 , 6 , 5 , 4 , 3 , 1 ] ) ;
53
103
} ) ;
54
104
} ) ;
0 commit comments