按之字形順序列印二叉樹

2021-09-07 15:44:22 字數 898 閱讀 1506

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

時間限制:1秒 空間限制:32768k 熱度指數:127726

解法1:

利用傳統的層序遍歷按行輸出,用乙個佇列儲存結點,再偶數層時將結果反轉存入,時間複雜度較高,此處不作討論。

解法2:

類似層序遍歷按行輸出的計數方式,利用雙邊佇列(deque)進行儲存:

奇數層:

在佇列尾部新增元素,先佇列頭的左子樹,後佇列頭的右子樹。

在佇列前部彈出元素。

偶數層:

在佇列前部新增元素,先佇列尾的右子樹,後佇列尾的左子樹。

在佇列尾部彈出元素。

/*

struct treenode

};*/

class

solution

}else

} c++

; a.

push_back

(b);

}return a;}}

;

解法3

利用兩個棧儲存,乙個棧儲存奇數層,正序列印,乙個儲存偶數層,反向列印

/*

struct treenode

};*/

class

solution

}else

//偶數層處理

} a.

push_back

(b);

c++;//層數疊加

}return a;}}

;

按之字形順序列印二叉樹

題目描述 按之字形順序列印二叉樹 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。解析 要分層列印,不能用常規方法,訪問乙個節點後,將該節點的左右子節點壓入佇列。奇數層從左到右列印,偶數層從右向左列印。使...

按之字形順序列印二叉樹

請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。include iostream include stack using namespace std struct treenode void pri...

按之字形順序列印二叉樹

其實我們可以借鑑層次遍歷時候的思路,參見劍指offer 060 把二叉樹列印成多行,我們把層次遍歷的結果儲存在vector vector 中每一層儲存在乙個vector中,那麼我們輸出的時候就可以進行調整,按照之字形輸出即可 for int i 0 i if i 1 return ans 完整 如下...