Leetcode - Maximum Width of Binary Tree
Leetcode - Find Numbers with Even Number of Digits

Leetcode - Flatten a Multilevel Doubly Linked List

violet posted @ Jul 11, 2020 05:54:40 AM in 算法 with tags Algorithm Golang Linked List , 287 阅读

https://leetcode.com/problems/flatten-a-multilevel-doubly-linked-list/

You are given a doubly linked list which in addition to the next and previous pointers, it could have a child pointer, which may or may not point to a separate doubly linked list. These child lists may have one or more children of their own, and so on, to produce a multilevel data structure, as shown in the example below.

Flatten the list so that all the nodes appear in a single-level, doubly linked list. You are given the head of the first level of the list.

 

Example 1:

Input: head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]
Output: [1,2,3,7,8,11,12,9,10,4,5,6]
Explanation:

The multilevel linked list in the input is as follows:

After flattening the multilevel linked list it becomes:

 

/**
 * Definition for a Node.
 * type Node struct {
 *     Val int
 *     Prev *Node
 *     Next *Node
 *     Child *Node
 * }
 */

func flatten(root *Node) *Node {
    if root == nil {
        return nil
    }
    stack := []*Node{}
    node := root
    var prev *Node
    for node != nil || len(stack) != 0 {
        for node != nil && node.Child == nil {
            prev = node
            node = node.Next
        }
        if node != nil && node.Child != nil {
            if node.Next != nil {
                stack = append(stack, node.Next)
            }               
            node.Next = node.Child
            node.Child.Prev = node
            node.Child = nil
            node = node.Next
            continue
        }
        if node == nil && len(stack) != 0 {
            node = stack[len(stack)-1]
            stack = stack[:len(stack)-1]
            prev.Next = node
            node.Prev = prev
            prev = node
            node = node.Next
        }
        
    }
    //Print(root)
    return root
}

func Print(root *Node) {
    node := root
    for node != nil {
        fmt.Println("===========")
        fmt.Println("node.Val: ", node.Val)
        fmt.Println("node.Prev: ", node.Prev)
        fmt.Println("node.Next: ", node.Next)
        fmt.Println("node.Child: ", node.Child)
        node = node.Next
    }
}
zaiya 说:
Dec 15, 2022 02:15:22 AM

The question is to flatten a multilevel doubly linked list, i.e. to put all the nodes of the list on the same level. The approach is to use a stack, push all the nodes on the current level into the stack. CBD For Fibromyalgia Then pop the nodes from the stack one by one and append them to the list. Move to the next level and repeat the process.

Emma 说:
Jan 22, 2023 09:55:10 PM

Flattening a multilevel doubly linked list can be a tricky task, but Leetcode has you covered! With their robust algorithm, you can easily flatten a multilevel doubly linked list CBD Benefits list into a single-level, doubly linked list. Their intuitive approach makes it easy to understand and execute, so you can quickly get the job done. Try it out today and simplify your data structure!

MAC Task Manager 说:
Feb 03, 2023 03:35:34 PM

If this is your first time using Task Manager for Mac, you may find it difficult to become acquainted with what is going on with the device shortcuts and the apps as well. To be honest, this is a common occurrence, and the main problem is that app navigation is very different from Windows and has its own way of finding shortcuts and opening apps as well. MAC Task Manager But don't worry if this is your first time using a MAC device; we'll show you how to utilize Task Manager for MAC in no time.

jnanabhumiap.in 说:
Jan 25, 2024 11:11:42 PM

JNANABHUMI AP provides all the latest educational updates and many more. The main concept or our aim behind this website has been the will to provide resources with full information on each topic jnanabhumiap.in which can be accessed through the Internet. To ensure that every reader gets what is important and worthy about the topic they search and link to hear from us.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter