4
4
[ ![ npm] ( https://img.shields.io/npm/v/@datastructures-js/binary-search-tree.svg )] ( https://www.npmjs.com/package/@datastructures-js/binary-search-tree )
5
5
[ ![ npm] ( https://img.shields.io/npm/dm/@datastructures-js/binary-search-tree.svg )] ( https://www.npmjs.com/package/@datastructures-js/binary-search-tree ) [ ![ npm] ( https://img.shields.io/badge/node-%3E=%206.0-blue.svg )] ( https://www.npmjs.com/package/@datastructures-js/binary-search-tree )
6
6
7
- node's data type: ** string** , ** number** .
7
+ node's ** key** data type: ** string** , ** number** .
8
+ node's ** value** data type: any.
8
9
9
10
<img width =" 413 " alt =" Binary Search Tree " src =" https://user-images.githubusercontent.com/6517308/35762621-74a72626-085f-11e8-8934-ef6facdd6e10.png " >
10
11
11
12
## Usage
13
+ ```
14
+ npm install --save @datastructures-js/binary-search-tree
15
+ ```
16
+
17
+ then
18
+
12
19
``` js
13
20
const binarySearchTree = require (' @datastructures-js/binary-search-tree' );
14
21
const bst = binarySearchTree ();
15
22
```
16
23
17
24
## API
18
25
19
- ** .node(value, parent, left, right)**
20
-
21
- creates a bst node.
26
+ ### .node(key, value, parent, left, right)
27
+ creates a bst node with the following api.
22
28
23
- * ** .setValue(value)** sets the node's value.
24
- * ** .getValue()** gets the node's value.
25
- * ** .setParent(parent)** sets the parent node.
26
- * ** .getParent()** gets the parent node.
27
- * ** .setLeft(left)** sets the node's left child.
28
- * ** .getLeft()** gets the node's left child.
29
- * ** .setRight(right)** sets the node's right child.
30
- * ** .getRight()** gets the node's right child.
29
+ * .setKey(key)
30
+ * .getKey()
31
+ * .setValue(value)
32
+ * .getValue()
33
+ * .setParent(node)
34
+ * .getParent()
35
+ * .setLeft(node)
36
+ * .getLeft()
37
+ * .setRight(node)
38
+ * .getRight()
31
39
32
40
``` js
33
- const n = bst .node (' test' );
41
+ const n = bst .node (1 , ' test' );
42
+ console .log (n .getKey ()); // 1
34
43
console .log (n .getValue ()); // test
35
44
console .log (n .getParent ()); // null
36
45
console .log (n .getLeft ()); // null
37
46
console .log (n .getRight ()); // null
38
47
```
39
48
40
- ** .insert(value)**
49
+ ### .insert(key, value)
41
50
42
- inserts a value into the tree.
51
+ inserts a node with key/ value into the tree.
43
52
``` javascript
44
- bst .insert (50 );
45
- bst .insert (80 );
46
- bst .insert (30 );
47
- bst .insert (90 );
48
- bst .insert (60 );
49
- bst .insert (40 );
50
- bst .insert (20 );
53
+ bst .insert (50 , ' v1 ' );
54
+ bst .insert (80 , ' v2 ' );
55
+ bst .insert (30 , ' v3 ' );
56
+ bst .insert (90 , ' v4 ' );
57
+ bst .insert (60 , ' v5 ' );
58
+ bst .insert (40 , ' v6 ' );
59
+ bst .insert (20 , ' v7 ' );
51
60
```
52
61
53
- ** .root()**
62
+ ### .root()
54
63
55
64
gets the root node
56
65
``` javascript
57
- console .log (bst .root ().getValue ()); // 50
66
+ console .log (bst .root ().getKey ()); // 50
58
67
```
59
68
60
- ** .min()**
69
+ ### .min()
61
70
62
- finds the min value node (most left).
71
+ finds the min key node (most left).
63
72
``` javascript
64
- console .log (bst .min ().getValue ()); // 20
73
+ console .log (bst .min ().getKey ()); // 20
65
74
```
66
75
67
- ** .max()**
76
+ ### .max()
68
77
69
- finds the min value node (most right).
78
+ finds the max key node (most right).
70
79
``` javascript
71
- console .log (bst .max ().getValue ()); // 90
80
+ console .log (bst .max ().getKey ()); // 90
72
81
```
73
82
74
- ** .count()**
83
+ ### .count()
75
84
76
85
gets nodes count.
77
86
``` javascript
78
87
console .log (bst .count ()); // 7
79
88
```
80
89
81
- ** .find(value) **
90
+ ### .search(key)
82
91
83
- finds the value's node or returns null if not found.
92
+ finds a node by key or returns null if not found.
84
93
``` javascript
85
- let n = bst .find (30 );
86
- console .log (n .getValue ()); // 30
87
- console .log (n .getRight ().getValue ()); // 40
88
- console .log (n .getLeft ().getValue ()); // 20
94
+ const n = bst .search (30 );
95
+ console .log (n .getKey ()); // 30
96
+ console .log (n .getRight ().getKey ()); // 40
97
+ console .log (n .getLeft ().getKey ()); // 20
89
98
```
90
99
91
- ** .traverseInOrder(cb)**
100
+ ### .traverseInOrder(cb)
92
101
``` js
93
102
// in-order traverse (left-parent-right)
94
- bst .traverseInOrder (node => console .log (node .getValue ()));
103
+ bst .traverseInOrder (node => console .log (node .getKey ()));
95
104
96
105
// 20
97
106
// 30
@@ -102,11 +111,11 @@ bst.traverseInOrder(node => console.log(node.getValue()));
102
111
// 90
103
112
```
104
113
105
- ** .traversePreOrder(cb)**
114
+ ### .traversePreOrder(cb)
106
115
107
116
``` js
108
117
// pre-order traverse (parent-left-right)
109
- bst .traversePreOrder (node => console .log (node .getValue ()));
118
+ bst .traversePreOrder (node => console .log (node .getKey ()));
110
119
111
120
// 50
112
121
// 30
@@ -117,11 +126,11 @@ bst.traversePreOrder(node => console.log(node.getValue()));
117
126
// 90
118
127
```
119
128
120
- ** .traversePostOrder(cb)**
129
+ ### .traversePostOrder(cb)
121
130
122
131
``` js
123
132
// post-order traverse (left-right-parent)
124
- bst .traverse (node => console .log (node .getValue ()));
133
+ bst .traverse (node => console .log (node .getKey ()));
125
134
126
135
// 20
127
136
// 40
@@ -132,14 +141,14 @@ bst.traverse(node => console.log(node.getValue()));
132
141
// 50
133
142
```
134
143
135
- ** .traverse(cb, order)**
144
+ ### .traverse(cb, order)
136
145
137
146
traverse the tree in the defined order and apply a callback on each node.
138
147
139
148
order values: ` inOrder ` , ` preOrder ` OR ` postOrder ` . default is ` inOrder `
140
149
141
150
``` js
142
- bst .traverse (node => console .log (node .getValue ())); // in-order
151
+ bst .traverse (node => console .log (node .getKey ())); // in-order
143
152
144
153
// 20
145
154
// 30
@@ -149,7 +158,7 @@ bst.traverse(node => console.log(node.getValue())); // in-order
149
158
// 80
150
159
// 90
151
160
152
- bst .traverse (node => console .log (node .getValue ()), ' preOrder' );
161
+ bst .traverse (node => console .log (node .getKey ()), ' preOrder' );
153
162
154
163
// 50
155
164
// 30
@@ -161,16 +170,16 @@ bst.traverse(node => console.log(node.getValue()), 'preOrder');
161
170
```
162
171
163
172
164
- ** .remove(value)**
173
+ ### .remove(value)
165
174
166
175
removes a value's node (if exists) from the tree.
167
176
``` javascript
168
- console .log (bst .find (30 ).getValue ()); // 30
177
+ console .log (bst .search (30 ).getKey ()); // 30
169
178
bst .remove (30 );
170
- console .log (bst .find (30 )); // null
179
+ console .log (bst .search (30 )); // null
171
180
```
172
181
173
- ** .clear()**
182
+ ### .clear()
174
183
175
184
clears the tree.
176
185
``` javascript
0 commit comments