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

2022-07-12 09:45:10 字數 783 閱讀 1595

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

思路:1、有了之前層次遍歷一行一行輸出的經驗,我們可以直接用乙個變數記錄行數,如果是奇數行,就將佇列中的元素按順序所有儲存下來,如果是偶數行,就順序儲存到乙個臨時vector中,再逆序儲存下來。

1/*2

struct treenode 9};

10*/

11class

solution

32if (pnode->right !=null) 36}

37//

如果是奇數行,就要將儲存下來的逆序儲存

38if (odd == 1

) 42}43

res.push_back(temp);

44 odd = 1 -odd;

45 current =next;

46 next = 0;47

}48return

res;49}

50 };

2、劍指offer思路

1/*2

struct treenode 9};

10*/

11class

solution else

38if

(level[current].empty()) 44}

45return

res;46}

47 };

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

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

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

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

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

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