leetcode:剑指 offer ii 028. 展平多级双向链表【用arraylist开挂】-爱代码爱编程
题目截图
题目分析
- 利用dfs把展开后的存到一个list里面即可
- 先对child进行dfs,再对next进行dfs
ac code
/*
// Definition for a Node.
class Node {
public int val;
public Node prev;
public Node next;
public Node child;
};
*/
class Solution {
private List<Node> list = new ArrayList<>();
public Node flatten(Node head) {
dfs(head);
for (int i = 0; i < list.size() - 1; i++) {
Node node1 = list.get(i);
Node node2 = list.get(i + 1);
node1.child = null;
node2.child = null;
node1.next = node2;
node2.prev = node1;
}
return head;
}
public void dfs(Node node) {
if (node == null) return;
list.add(node);
dfs(node.child);
dfs(node.next);
}
}
总结
- arraylist开挂!