LeetCode 420 扁平化多级双向链表 (深搜、双向链表)
程序员文章站
2022-05-20 19:05:09
...
class Solution {
// 头部哑结点
Node header = new Node();
Node cur;
public Node flatten(Node head) {
if(head == null) return null;
cur = header;
helper(head);
// 第一个节点的前驱必须为空
header.next.prev = null;
return header.next;
}
// 深度优先搜索 —— 先序遍历
public void helper(Node node){
if(node == null) return;
// 接上链表
cur.next = node;
node.prev = cur;
cur = cur.next;
// 注意这里的 node的next之后会发生改变,所以要预存下来
Node temp = node.next;
helper(node.child);
// 题目要求双向链表中的child域为空
node.child = null;
helper(temp);
}
}
推荐阅读
-
数据结构 - 扁平化多级双向链表
-
LeetCode 420 扁平化多级双向链表 (深搜、双向链表)
-
每日一道Leetcode - 430. 扁平化多级双向链表
-
Leetcode 430.扁平化多级双向链表 c语言
-
Leetcode 430. 扁平化多级双向链表 C++
-
LeetCode 430. 扁平化多级双向链表
-
LeetCode题解:430.扁平化多级双向链表
-
数据结构 - 扁平化多级双向链表
-
430-扁平化多级双向链表(Flatten a Multilevel Doubly Linked List)
-
430. Flatten a Multilevel Doubly Linked List(扁平化多级双向链表)