劍指 69,按之列印二叉樹(

2021-10-04 03:38:57 字數 787 閱讀 6966

題目描述

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

【新思路:】將只需要用乙個佇列就可。和層序遍歷是一樣的方式,但是在不同的行以不同的方向進入tmp陣列,這裡具體實現是通過用乙個佇列,佇列裡面的是一行的所有節點,建立乙個佇列節點大小的tmp陣列,然後按照是該從左到右還是從右到左的方式給陣列賦值 index=lefttoright ? i: n-1-i ;

思路:要按照之列印。首先給的是根節點(代表從左到右了),接下來要從右到左。我們可以用兩個棧來存放不同順序的節點。stackl存放從左到右的,stackr存放從右到左的。當一邊為空後要push入res中。

在壓入在壓入每一行的時候,要注意判斷是否為空的情況。

class

solution

if(popnode-

>left!=

nullptr

)//左邊棧解決完了,轉移到右邊的棧。要處理. 但是注意是當tmp不為空才可以push_back!if(

!tmp.

empty()

)while

(!stackr.

empty()

)if(popnode-

>right!=

nullptr

)//到這裡之後某一邊的被徹底解決了if(

!tmp.

empty()

)}}return res;

}

劍指offer 按之字形列印二叉樹

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。對於奇數層,它的 從左往右的 每個節點邊輸出邊按左孩子 右孩子的順序壓棧,該層的下乙個層為偶數層,彈棧時就是從右往左輸出。對於偶數層,它的 從右往左的 每個...

劍指offer59 按之字型列印二叉樹 題解

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。奇數層從左往右列印,偶數層從右往左列印 若ret的長度為奇數,說明當前是偶數層,則對row執行倒序操作。輸入 返回值 8 10,6 5,7,9,11 1.時...

按層列印二叉樹

二叉樹是一種常見的資料結構,由n 你 0 個節點構成,每個節點最多有兩個子二叉樹。由二叉樹的定義可知,一棵二叉樹由三部分組成 根節點 左子樹和右子樹。二叉樹的遍歷方式有先序遍歷 中序遍歷和後序遍歷。先序遍歷 首先訪問根節點,然後訪問根節點左孩子,再訪問根節點的右孩子。中序遍歷 首先訪問根節點左孩子,...