1. 程式人生 > >劍指offer(59)按之字形順序打印二叉樹

劍指offer(59)按之字形順序打印二叉樹

eve 就是 是我 數據結構 rev 其他 正常的 正常 nbsp

題目描述

請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。

題目分析

這道題還是需要畫圖分析,不然不好找規律。

正常的廣度遍歷的話,都是同樣的順序,從左到右,而我們要在廣度遍歷的基礎上改造為之字形遍歷。

也就是我們需要在奇數行從左至右,在偶數行從右至左,因為是先進後出,分析可得我們需要的數據結構是棧。

為了避免順序錯誤,我們需要的不只是一個棧,而是兩個棧,這個大家畫圖研究下就能想到。

兩個棧是這麽用的,這個棧保存這一行的數據,另一個棧保存下一行的數據,然後一行打印完後交替。

當然也有人是在廣度遍歷的基礎上加個臨時數組,然後對偶數行的數據reverse也可以做,但是我覺得reverse效率太低,所以就不打算寫這種方法了。

代碼

待更新

劍指offer(59)按之字形順序打印二叉樹