Dequeue all Nodes of current level and Enqueue all Nodes of next level
List < int > curr_level1 = new List < int > ( ) ; List < int > curr_level2 = new List < int > ( ) ; while ( n1 > 0 ) { Node node1 = q1 . Peek ( ) ; q1 . Dequeue ( ) ; if ( node1 . left != null ) q1 . Enqueue ( node1 . left ) ; if ( node1 . right != null ) q1 . Enqueue ( node1 . right ) ; n1 -- ; Node node2 = q2 . Peek ( ) ; q2 . Dequeue ( ) ; if ( node2 . left != null ) q2 . Enqueue ( node2 . left ) ; if ( node2 . right != null ) q2 . Enqueue ( node2 . right ) ; curr_level1 . Add ( node1 . data ) ; curr_level2 . Add ( node2 . data ) ; }