Open In App

Java Program To Flatten A Multi-Level Linked List Depth Wise- Set 2

Last Updated : 13 Feb, 2023
Comments
Improve
Suggest changes
1 Like
Like
Report

We have discussed flattening of a multi-level linked list where nodes have two pointers down and next. In the previous post, we flattened the linked list level-wise. How to flatten a linked list when we always need to process the down pointer before next at every node.

Input:  
1 - 2 - 3 - 4
    |
    7 -  8 - 10 - 12
    |    |    |
    9    16   11
    |    |
    14   17 - 18 - 19 - 20
    |                    |
    15 - 23             21
         |
         24

Output:        
Linked List to be flattened to
1 - 2 - 7 - 9 - 14 - 15 - 23 - 24 - 8
 - 16 - 17 - 18 - 19 - 20 - 21 - 10 - 
11 - 12 - 3 - 4
Note: 9 appears before 8 (When we are 
at a node, we process down pointer before 
right pointer)

Source: Oracle Interview

If we take a closer look, we can notice that this problem is similar to tree to linked list conversion. We recursively flatten a linked list with the following steps:

  1. If the node is NULL, return NULL.
  2. Store the next node of the current node (used in step 4).
  3. Recursively flatten down the list. While flattening, keep track of the last visited node, so that the next list can be linked after it. 
  4. Recursively flatten the next list (we get the next list from the pointer stored in step 2) and attach it after the last visited node.

Below is the implementation of the above idea. 

Output: 

1 2 7 9 14 15 23 24 8 16 17 18 19 20 21 10 11 12 3 4

Time complexity : O(n), where n is the total number of nodes in the multi-level linked list. This is because the code processes each node in the list exactly once and the operations performed on each node take constant time.

The space complexity : O(1), as it does not use any additional data structures to store the nodes. The code only uses a few variables to keep track of the current node and the last node visited.

Alternate implementation using the stack data structure

Please refer complete article on Flatten a multi-level linked list | Set 2 (Depth wise) for more details!


Next Article
Article Tags :
Practice Tags :

Similar Reads