題目:
思路:
法一:1.根節(jié)點(diǎn)為空衡怀,直接返回空數(shù)組;
? ? ? ? ? ? ? 根節(jié)點(diǎn)不為空靠娱,設(shè)置遞歸函數(shù)嗽元,輸入二叉樹和當(dāng)前所在的層
? ? ? ? ? ? 2.遞歸函數(shù)里敛纲,
????????????????如果根節(jié)點(diǎn)的值不為空,并且層數(shù)對應(yīng)的返回結(jié)果元素result[depth]為空剂癌,就先將對應(yīng)的? ? ? ? ? ? ? ? ? result[depth]設(shè)置為[],再將當(dāng)前節(jié)點(diǎn)的值和對應(yīng)的result[depth]解構(gòu)到返回結(jié)果中
? ? ? ? ? ? ? ? 如果根節(jié)點(diǎn)的值不為空淤翔,層數(shù)對應(yīng)的返回結(jié)果元素result[depth]不為空,則直接將當(dāng)前? ? ? ? ? ? ? ? ? ? ?節(jié)點(diǎn)的值和對應(yīng)的result[depth]解構(gòu)到返回結(jié)果中
? ? ? ? ? ? ? ? 再換到下一層
? ? ? ? ? ? 3.再遞歸(右子樹佩谷、當(dāng)前深度)和(左子樹旁壮、當(dāng)前深度),反轉(zhuǎn)即可
代碼實(shí)現(xiàn):
法二:
思路:時(shí)間復(fù)雜度為O(n)
? ? ? ? 首先谐檀,異常判斷抡谐,把根節(jié)點(diǎn)添加到當(dāng)前層中去,遍歷當(dāng)前層的每個(gè)元素桐猬,再對應(yīng)到當(dāng)前節(jié)點(diǎn)麦撵,將對應(yīng)的左右子樹添加到下一層數(shù)組中去
? ? ? ? 其次,將當(dāng)前層的節(jié)點(diǎn)值添加到最終結(jié)果中溃肪,并將下一層換到當(dāng)前層免胃,下一層重置;循環(huán)
? ? ? ? 最后將結(jié)果反轉(zhuǎn)即可
優(yōu)化: