您將獲得乙個雙向鍊錶,除了下乙個和前乙個指標之外,它還有乙個子指標,可能指向單獨的雙向鍊錶。這些子列表可能有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。
扁平化列表,使所有結點出現在單級雙鏈表中。您將獲得列表第一級的頭部。
示例:
輸入:
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
我的思路:
如上面示例所示,我遇到乙個節點,比如說3號節點,發現它有孩子,然後我儲存現場(儲存3號節點的後乙個節點4,下次將從4節點開始繼續執行函式),遞迴,把它的孩子放入函式裡再遞迴呼叫,重複上述過程,當發現子節點沒有孩子之後,正常結束呼叫即可。
**:
class solution
t2->next = t1;//尾結點接上前面儲存現場的節點
if (t1 != null)//儲存現場的節點可能為空,要注意
t1->prev = t2;
temp = t1;//準備繼續遍歷
}else//節點沒有孩子,正常往下走就行
}return head;//返回頭結點
}};
leetcode 430 扁平化多級雙向鍊錶
題目鏈結 多級雙向鍊錶中,除了指向下乙個節點和前乙個節點指標之外,它還有乙個子鍊錶指標,可能指向單獨的雙向鍊錶。這些子列表也可能會有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。給你位於列表第一級的頭節點,請你扁平化列表,使所有結點出現在單級雙鏈表中。示例 1 輸入 head ...
430 扁平化多級雙向鍊錶
題目 多級雙向鍊錶中,除了指向下乙個節點和前乙個節點指標之外,它還有乙個子鍊錶指標,可能指向單獨的雙向鍊錶。這些子列表也可能會有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。給你位於列表第一級的頭節點,請你扁平化列表,使所有結點出現在單級雙鏈表中。示例 1 輸入 head 1,...
陣列扁平化
原陣列 const arr 1,2,3,4 5,6,7,8 9 希望輸出 1,2,3,4,5,6,7,8,9 方法一 遞迴 function arrdelayering arr else return newarr let newarr arrdelayering arr 1,2,3,4,5,6,7...