您將獲得乙個雙向鍊錶,除了下乙個和前乙個指標之外,它還有乙個子指標,可能指向單獨的雙向鍊錶。這些子列表可能有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。
扁平化列表,使所有結點出現在單級雙鏈表中。您將獲得列表第一級的頭部。
示例:輸入:
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:
publicview codenode 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;
扁平化多級雙向鍊錶
題目描述 多級雙向鍊錶中,除了指向下乙個節點和前乙個節點指標之外,它還有乙個子鍊錶指標,可能指向單獨的雙向鍊錶。這些子列表也可能會有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。給你位於列表第一級的頭節點,請你扁平化列表,使所有結點出現在單級雙鏈表中。示例 1 輸入 head ...
430 扁平化多級雙向鍊錶
題目 多級雙向鍊錶中,除了指向下乙個節點和前乙個節點指標之外,它還有乙個子鍊錶指標,可能指向單獨的雙向鍊錶。這些子列表也可能會有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。給你位於列表第一級的頭節點,請你扁平化列表,使所有結點出現在單級雙鏈表中。示例 1 輸入 head 1,...
LeetCode 430 扁平化多級雙向鍊錶
您將獲得乙個雙向鍊錶,除了下乙個和前乙個指標之外,它還有乙個子指標,可能指向單獨的雙向鍊錶。這些子列表可能有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。扁平化列表,使所有結點出現在單級雙鏈表中。您將獲得列表第一級的頭部。示例 輸入 1 2 3 4 5 6 null 7 8 9...