You can choose either way. There are multiple factors here.
The classic algorithm for inorder traversal of binary trees is recursive, and splay trees can be as deep as they have nodes because they are not strictly balanced. So, a recursive in order traversal of a splay tree can easily run out of stack space -- and it could take up as much memory than the splay tree itself!
If the splay tree has nodes with parent pointers the inorder traversal can be done without recursion and without splaying. This is because you can find the prececessor and successor by following left, right, and parent pointers.
It is also possible to efficiently iterate splay tree nodes in order as follows:
- Find the smallest element and splay it to the root.
- Find its successor and splay it to the root.
- Find its successor and splay it to the root. Etc.
- Continue until there is no successor.
In this case, when all is done, the root will be the largest element when done.
Inorder traversal of splay trees (or https://doi.org/10.1016/S1571-0661(04)80771-0) describes why this approach is efficient. It is nearly O(n) to visit each node of a splay tree in order, splaying each time.