题目链接: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;
}
};

最新文章

  1. Tomcat服务无法启动的问题
  2. Python基础之面向对象
  3. CS小分队第一阶段冲刺站立会议(5月7日)
  4. 搭建jenkins环境(linux操作系统)
  5. 关于C与C++的struct,union,enum用法差异
  6. vimrc for windows
  7. hpple 简单使用
  8. tomcat服务器报Server at localhost was unable to start within 45 seconds的问题
  9. c#的Marshal
  10. final、finally、finalize差异
  11. php 批量下载文件
  12. 运行 python *.py 文件出错,如:python a.py
  13. 进程间通信IPC与Binder机制原理
  14. 2017.07.10【NOIP提高组】模拟赛B组
  15. JavaWeb 之 清理错误的无奈之举
  16. CSS-3 新弹性盒模型属性
  17. java中远程http文件上传及file2multipartfile
  18. nexus 手动更改 私服包
  19. C++面向对象高级开发课程(第二周)
  20. 【Java】JavaIO(一)、基础知识

热门文章

  1. RestTemplate最详解
  2. unity之Layer作用
  3. Java多线程之线程的互斥处理
  4. 8、kubernetes之存储卷资源
  5. 12 redis搭建主从服务(ubuntu)
  6. nvm的安装与配置和基本使用(学习总结)
  7. 线段树离散化 unique + 二分查找 模板 (转载)
  8. LeetCode939 最小面积矩形
  9. codeforces 799 C. Fountains(二分+思维)
  10. poj 1177 Picture(线段树周长并)