Review the Code
Review the Folder and File classes in the homework files. These are similar to those we used in the recursion module.
Review the printFolderContentsRecursive method in the driver. This method prints a tree-like hierarchy of all of the files and folders in a top level folder.
Use Stacks to Replace Recursion
One use of stacks is to replace recursion. Write a method that accomplishes the same task as the recursive printFolderContentsRecursive method, but using stacks instead.
I’ve started the method for you, you will complete the code.
Think about how you can use a stack. The approach of recursion is to do a small piece of the problem now and then combine that with the “rest of the solution” later on. You get that “rest of the solution” with your recursive call. For stacks, you can do the same thing. The difference is that instead of using a recursive call, you can use the stack to store the “solve later” part.
Testing the Code: Building the Folder Hierarchy
I have helper methods in the driver that build the folder hierarchy.
When you create your “top folder” (called “Folder0”), you can specify the depth of the hierarchy that you want.
I recommend starting your testing with a small number (1 or 2). Then increase the number once your code is working.
When the hierarchy is built, the methods randomly decide how many subfolders and files will be included at each level of the hierarchy.
This will allow you to make sure your code is robust.
Because randomization is used, be sure to test multiple times for each depth!
I’ve included a picture of an example hierarchy.
If you have questions about the hierarchy that is being created, please post to the discussion board!
For Full Credit
Use only the stack methods push, pop, peek, and isEmpty.
Do not use other data structures.
You can create local variables of type Stack.
You can use the returned List and List objects.
But do not create any new lists, arrays, etc.!
Formatting (5/25 points)
Match the indentation formatting of the recursive method.
You can invoke the recursive method with and without formatting to compare outputs to the outputs from your stack.
My recommendation is to get the contents of the print correct first and only once that is working, then work on the indentation.
Again, use only local variables and stacks. Do not use any data structure other than a stack to get the proper formatting.
Review the Code