1. Declare two ArrayLists, one for storing the data of all the nodes and the other to store the data of the nodes at each level. 2. Declare two Queues to store nodes at the current level and the next level. 3. Add the root node to the current level Queue 4. Start a loop till the current level Queue becomes empty. 5. Dequeue a node from the current level Queue and add its data to the ArrayList that is storing the data of the current level's nodes. 6. Add the left and right children of this node to the Next Level Queue. 7. If the Current level Queue becomes empty, add the data of the level Arraylist to the List which will be returned. 8. Also, reinitialize the level Arraylist to new List and add all the nodes from the Next level Queue to the Current level Queue. 9. At the end of the Loop i.e. when the current level nodes become empty, return the list.