這題也是一點(diǎn)想法都沒有蛔屹,平常做的traversal再怎么樣也是一個(gè)Horizontal的, vertical的話豁生,怎么知道誰和你是一列的兔毒。漫贞。。
答案搬運(yùn)工育叁。迅脐。【看完答案我真心覺得這題是Hard level】
答案采用了BFS的方式豪嗽,最厲害的地方就是他做了一個(gè)cols的queue谴蔑。然后結(jié)合了一下HasMap. 同一個(gè)col的, which will have same hashkey, 都會(huì)放在同一個(gè)list里。當(dāng)?shù)搅薒eaf的時(shí)候龟梦,把所有同一個(gè)col里的賽進(jìn)res list里树碱。
還有一個(gè)特別tricky的地方就是。 我們一開始給Root 一個(gè)col value 為0的值变秦。 但是我們不知道left subtree到底能夠延伸的多l(xiāng)eft成榜, right subtree能延伸的多right。有可能最左邊col=-100000... 最右邊col = 1000000. 我們都不知道蹦玫,所有我們用了一個(gè)min, max 來記錄最左和最右的col值赎婚。當(dāng)col刷新了原本最遠(yuǎn)的col時(shí)候,我們要update一下min, max.
然后還有一個(gè)queue ?q,就是為了按照BFS的順序visit Node而存在的樱溉。