OO Java, traverses a directory hierarchy depth first, and outputs a preorder traversal using self implemented stacks, queues, and linked lists