class Solution {
public:
Node* get(Node *head, Node **rear){
Node *last = NULL;
Node *p = head;
while(head){
last = head;
head = head->next;
}
*rear = last;
return head;
}
Node* flatten(Node* head) {
Node *p = head;
Node *tmp = NULL;
Node *last = NULL;
Node *rear = NULL;
while(p){
/* 如果p->child存在,则将对其进行递归处理,递归的思想为:
* 分别访问访问与head同一级别每个节点,将其child链接到同一级别即可
*/
if(p->child){
tmp = flatten(p->child);
get(p->child, &rear);/*用于寻找最后一个节点,将结果放到rear中 */
if(p->next)
p->next->prev = rear;
rear->next = p->next;
tmp->prev = p;
p->next = tmp;
p->child = NULL;
}
p = p->next;
}
return head;
}
};
LeetCode-430-扁平化多级双向链表-C语言
猜你喜欢
转载自blog.csdn.net/weixin_36094222/article/details/90013154
今日推荐
周排行