劍指offer 按之字形順序列印二叉樹(C )

2021-10-04 13:15:18 字數 1274 閱讀 9890

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

/*

struct treenode

};*/

class

solution

;bool even =

false

; vectorint>

> vec;

// 多借助其他輔助資料結構

vector<

int> tmpvec;

queue> que;

que.

push

(proot)

;// 此時根結點不空 根結點入隊

while

(!que.

empty()

)if(even)

// 保證每迴圈兩次時逆轉陣列中的元素

reverse

(tmpvec.

begin()

, tmpvec.

end())

; vec.

push_back

(tmpvec)

;// 一維陣列進入二維陣列

tmpvec.

clear()

;// 清空陣列 以便用於儲存下一層的結點值

even =

!even;

// bool變數值發生改變

}return vec;

// 返回二維陣列}}

;

下面附帶二叉樹的層序遍歷演算法:

#include

#include

#include

using

namespace std;

typedef

struct bitreenode

bitreenode;

vector<

int>

bitreelevelorder

(bitreenode* proot)

; queue> que;

vector<

int> vec;

que.

push

(proot)

;// 根結點入隊

while

(!que.

empty()

)// 如果佇列不空

return vec;

// 返回二叉樹的層序遍歷序列

}

3 15 劍指offer 按之字形順序列印二叉樹

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。層序遍歷的高階 每行的節點的訪問順序是相反的,我們可以用兩個棧來隔行儲存,乙個棧中根據另乙個棧的棧頂元素的 左結點 右結點 的順序儲存節點,而另乙個棧根據另...

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

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。我的解法是用兩個棧來列印,第乙個棧st1列印奇數層,第二個棧st2列印偶數層。先將根節點壓入st1,然後將st1中元素出棧並訪問元素,出棧的同時,將每個節點...

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

題目 劍指offer 按之字形順序列印二叉樹 這個題的本質是返回每一層的節點,關鍵是增加每一層的最右側節點作為標記。如果指標到達這個節點,那麼證明此時佇列裡面的都是下一層的節點。關鍵是為什麼不會有下下層的節點,因為現在訪問到last,最多生成下一層的節點,不會有下下層。所以,此時佇列中最後乙個節點就...