扁平化多級雙向鍊錶

2021-10-11 21:13:43 字數 1399 閱讀 7345

題目描述:

多級雙向鍊錶中,除了指向下乙個節點和前乙個節點指標之外,它還有乙個子鍊錶指標,可能指向單獨的雙向鍊錶。這些子列表也可能會有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。

給你位於列表第一級的頭節點,請你扁平化列表,使所有結點出現在單級雙鏈表中。

示例 1:

輸入:head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]

輸出:[1,2,3,7,8,11,12,9,10,4,5,6]

解釋:輸入的多級列表如下圖所示:

扁平化後的鍊錶如下圖:

借用官方的圖:

借用乙個vector空間,裡面存放搜尋到的節點

遍歷鍊錶

child不為空,先搜尋child分支上的節點

遍歷完成返回,將vector中節點鏈結起來

child節點搜尋完之後,一定要置為空。

**:

class

solution

dfs(head-

>next)

;//搜尋下乙個節點

} node*

flatten

(node* head)

return vn[0]

;//返回}}

;

借用輔助棧,遍歷鍊錶

如child不為空,將該節點入棧,然後遍歷child節點分支

child分支為空,鏈結鍊錶

具體鏈結細節都在**裡了

**:

class

solution

if(p-

>next ==

nullptr

&&!st.

empty()

) tmp-

>next = tmp-

>child;

//改變父節點next指向

p = tmp;

//重新改變p的位置,將p指向父節點的位置

tmp-

>child =

nullptr

;//把child節點置為空

st.pop();

} p = p-

>next;

}return head;}}

;

扁平化多級雙向鍊錶

您將獲得乙個雙向鍊錶,除了下乙個和前乙個指標之外,它還有乙個子指標,可能指向單獨的雙向鍊錶。這些子列表可能有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。扁平化列表,使所有結點出現在單級雙鏈表中。您將獲得列表第一級的頭部。示例 輸入 1 2 3 4 5 6 null 7 8 9...

430 扁平化多級雙向鍊錶

題目 多級雙向鍊錶中,除了指向下乙個節點和前乙個節點指標之外,它還有乙個子鍊錶指標,可能指向單獨的雙向鍊錶。這些子列表也可能會有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。給你位於列表第一級的頭節點,請你扁平化列表,使所有結點出現在單級雙鏈表中。示例 1 輸入 head 1,...

LeetCode 430 扁平化多級雙向鍊錶

您將獲得乙個雙向鍊錶,除了下乙個和前乙個指標之外,它還有乙個子指標,可能指向單獨的雙向鍊錶。這些子列表可能有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。扁平化列表,使所有結點出現在單級雙鏈表中。您將獲得列表第一級的頭部。示例 輸入 1 2 3 4 5 6 null 7 8 9...