扁平化多級雙向鍊錶

2022-03-23 15:47:47 字數 932 閱讀 1838

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

扁平化列表,使所有結點出現在單級雙鏈表中。您將獲得列表第一級的頭部。

示例:輸入:

1---2---3---4---5---6--null

|7---8---9---10--null

|11--12--null

輸出:1-2-3-7-8-11-12-9-10-4-5-6-null

以上示例的說明:

給出以下多級雙向鍊錶:

我們應該返回如下所示的扁平雙向鍊錶:

解法1:

public

node flatten(node head)

/*展開雙向鍊錶

*/helper(head);

/*返回頭節點

*/return

first;

} public

void

helper(node node)

else

/*尾節點賦值為當前節點

*/last =node;

/*當前節點的孩子節點不為空時,先暫存當前節點的下乙個節點,遞迴遍歷孩子節點,然後當前節點的孩子節點賦值為空,當前節點指向前面暫存的下乙個節點

*/if (node.child != null

) else

}}

/*** 定義乙個尾節點

*/private

node last;

/*** 定義乙個頭節點

*/private node first;

view code

扁平化多級雙向鍊錶

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

430 扁平化多級雙向鍊錶

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

LeetCode 430 扁平化多級雙向鍊錶

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