Skip to content

Commit 4fc8e06

Browse files
committed
ref: add traverse method
1 parent 489dc90 commit 4fc8e06

File tree

1 file changed

+20
-26
lines changed

1 file changed

+20
-26
lines changed

src/main/java/com/thealgorithms/datastructures/trees/SplayTree.java

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -247,13 +247,24 @@ private int minValue(Node root) {
247247
}
248248

249249
/**
250-
* Perform an in-order traversal of the SplayTree.
250+
* Perform a traversal of the SplayTree.
251251
*
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.
253254
*/
254-
public List<Integer> inOrder() {
255+
public List<Integer> traverse(TraverseOrder traverseOrder) {
255256
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+
}
257268
return result;
258269
}
259270

@@ -271,17 +282,6 @@ private void inOrderRec(Node root, List<Integer> result) {
271282
}
272283
}
273284

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-
285285
/**
286286
* Recursive function for pre-order traversal.
287287
*
@@ -296,17 +296,6 @@ private void preOrderRec(Node root, List<Integer> result) {
296296
}
297297
}
298298

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-
310299
/**
311300
* Recursive function for post-order traversal.
312301
*
@@ -320,4 +309,9 @@ private void postOrderRec(Node root, List<Integer> result) {
320309
result.add(root.key);
321310
}
322311
}
312+
313+
/**
314+
* Enum to specify the order of traversal.
315+
*/
316+
public enum TraverseOrder { IN_ORDER, PRE_ORDER, POST_ORDER }
323317
}

0 commit comments

Comments
 (0)