本文共 1512 字,大约阅读时间需要 5 分钟。
为了将多级双向链表扁平化为单级链表,我们可以采用深度优先搜索的方法,维护一个预处理指针(pre),将每个节点依次连接到链表中。具体步骤如下:
pre 初始化为 null。pre 不为空,将当前节点连接到 pre 的后面。pre 后面。以下是实现代码:
class Solution { private Node pre = null; public Node flatten(Node head) { if (head == null) return null; pre = null; while (head != null) { // 记录下一个节点 Node next = head.next; // 当前节点的连接 if (pre != null) { pre.next = head; head.prev = pre; } pre = head; // 处理子链表 if (head.child != null) { Node currentChild = head.child; while (currentChild != null) { // 将当前节点连接到pre后面 if (pre != null) { pre.next = currentChild; currentChild.prev = pre; } pre = currentChild; // 记录下一个节点 Node nextChild = currentChild.next; // 处理下一个节点 currentChild = nextChild; } } // 继续处理下一个节点 head = next; } return head; }} 代码解释:
pre 用于记录链表的上一个节点。while 循环从头节点开始处理。pre 不为空,将当前节点连接到链表的后面。while 循环依次连接每个子节点到链表中。这种方法确保了每个节点都被正确连接到链表中,生成一个扁平化的双向链表。
转载地址:http://snpyz.baihongyu.com/