Anyone has a ready implementation of the Reverse Breadth First traversal algorithm in C#?
By Reverse Breadth First traversal , I mean instead of searching a tree startin
Run a normal BFS from rootNode
and let depth[i] = linked list of nodes with depth i
. So for your example you'll have:
depth[1] = {1}, depth[2] = {2, 3, 4} etc.
. You can build this with a simple BFS search. Then print all the nodes in depth[maxDepth]
, then those in depth[maxDepth - 1]
etc.
The depth of a node i
is equal to the depth of its father node + 1. The depth of the root node can be considered 1 or 0.
Use a combination of a stack and queue.
Do the 'normal' BFS using the queue (which I presume you know to do already), and keep pushing nodes on the stack as you encounter them.
Once done with the BFS, the stack will contain the reverse BFS order.