Binary search traversal with in/pre/post order and BFS/DFS
There is only one point I can state: in your constructor of Node you don't need to explicitly set left and right to null. The Java runtime system will do that for you. Also, note that DFS and preorder traversal are doing the same thing so you might want to consider removing one. Since your binary tree is not guaranteed to be balanced, I would retain the DFS as it allocates your stack on the heap, and so it is invulnerable to stack overflow as your recursive preorder traversal routine.