LeetCode 430. Faltten a Multilevel Doubly Linked List
2024-09-01 06:21:39
题目链接:LeetCode 430. Faltten a Multilevel Doubly Linked List
class Node {
public:
int val = NULL;
Node* prev = NULL;
Node* next = NULL;
Node* child = NULL;
Node() {}
Node(int _val, Node* _prev, Node* _next, Node* _child) {
val = _val;
prev = _prev;
next = _next;
child = _child;
}
};
class Solution {
public:
// 解法一:迭代
Node* flatten_iteration(Node *head) {
if (head == NULL) {
return NULL;
}
for (Node *p = head; p != NULL; p = p->next) {
Node *next = p->next;
if (p->child != NULL) {
p->next = p->child;
p->child->prev = p;
p->child = NULL;
Node *tmp = p->next;
while (tmp->next != NULL) {
tmp = tmp->next;
}
tmp->next = next;
next->prev = tmp;
}
}
return head;
}
// 解法二:递归
Node* flatten_recursion(Node *head) {
if (head == NULL) {
return head;
}
Node *p = head;
while (p != NULL) {
if (p->child != NULL) {
Node *next = p->next;
Node *nextLayer = flatten_recursion(p->child);
p->next = nextLayer;
nextLayer->prev = p;
p->child = NULL;
while (nextLayer->next != NULL) {
nextLayer = nextLayer->next;
}
nextLayer->next = next;
if (next != NULL) {
next->prev = nextLayer;
}
}
p = p->next;
}
return head;
}
};
最新文章
- Tomcat服务无法启动的问题
- Python基础之面向对象
- CS小分队第一阶段冲刺站立会议(5月7日)
- 搭建jenkins环境(linux操作系统)
- 关于C与C++的struct,union,enum用法差异
- vimrc for windows
- hpple 简单使用
- tomcat服务器报Server at localhost was unable to start within 45 seconds的问题
- c#的Marshal
- final、finally、finalize差异
- php 批量下载文件
- 运行 python *.py 文件出错,如:python a.py
- 进程间通信IPC与Binder机制原理
- 2017.07.10【NOIP提高组】模拟赛B组
- JavaWeb 之 清理错误的无奈之举
- CSS-3 新弹性盒模型属性
- java中远程http文件上传及file2multipartfile
- nexus 手动更改 私服包
- C++面向对象高级开发课程(第二周)
- 【Java】JavaIO(一)、基础知识