@@ -247,13 +247,24 @@ private int minValue(Node root) {
247
247
}
248
248
249
249
/**
250
- * Perform an in-order traversal of the SplayTree.
250
+ * Perform a traversal of the SplayTree.
251
251
*
252
- * @return A list containing the keys in in-order traversal order.
252
+ * @param traverseOrder The order of traversal (IN_ORDER, PRE_ORDER, or POST_ORDER).
253
+ * @return A list containing the keys in the specified traversal order.
253
254
*/
254
- public List <Integer > inOrder ( ) {
255
+ public List <Integer > traverse ( TraverseOrder traverseOrder ) {
255
256
List <Integer > result = new LinkedList <>();
256
- inOrderRec (root , result );
257
+ switch (traverseOrder ) {
258
+ case IN_ORDER :
259
+ inOrderRec (root , result );
260
+ break ;
261
+ case PRE_ORDER :
262
+ preOrderRec (root , result );
263
+ break ;
264
+ case POST_ORDER :
265
+ postOrderRec (root , result );
266
+ break ;
267
+ }
257
268
return result ;
258
269
}
259
270
@@ -271,17 +282,6 @@ private void inOrderRec(Node root, List<Integer> result) {
271
282
}
272
283
}
273
284
274
- /**
275
- * Perform a pre-order traversal of the SplayTree.
276
- *
277
- * @return A list containing the keys in pre-order traversal order.
278
- */
279
- public List <Integer > preOrder () {
280
- List <Integer > result = new LinkedList <>();
281
- preOrderRec (root , result );
282
- return result ;
283
- }
284
-
285
285
/**
286
286
* Recursive function for pre-order traversal.
287
287
*
@@ -296,17 +296,6 @@ private void preOrderRec(Node root, List<Integer> result) {
296
296
}
297
297
}
298
298
299
- /**
300
- * Perform a post-order traversal of the SplayTree.
301
- *
302
- * @return A list containing the keys in post-order traversal order.
303
- */
304
- public List <Integer > postOrder () {
305
- List <Integer > result = new LinkedList <>();
306
- postOrderRec (root , result );
307
- return result ;
308
- }
309
-
310
299
/**
311
300
* Recursive function for post-order traversal.
312
301
*
@@ -320,4 +309,9 @@ private void postOrderRec(Node root, List<Integer> result) {
320
309
result .add (root .key );
321
310
}
322
311
}
312
+
313
+ /**
314
+ * Enum to specify the order of traversal.
315
+ */
316
+ public enum TraverseOrder { IN_ORDER , PRE_ORDER , POST_ORDER }
323
317
}
0 commit comments