思路:我們一般輸出二叉樹結點是通過三種常用的遍歷方法:前序遍歷,中序遍歷,後序遍歷。這三種遍歷分別是什麼這裡就不過多介紹了,網上隨便一查會有很多。這裡要求的輸出順序與這三種常用的方法不同,有點類似先序遍歷,因為先輸出的是根結點,但是又並不完全相同,因為先序遍歷會順著子樹一直向下直到根結點,再逐層返回。#這裡需要將每層順序列印,就考慮可以使用佇列容器,先將根結點輸出,輸出同時將其子結點入隊,迴圈輸出佇列中的結點,同時將其孩子結點入隊,知道隊空為止。
**如下:
vector<
int>
printfromtoptobottom
(treenode* root)
return res;
}
ok,這樣通過非遞迴的方式將樹的結點值按要求排序完畢了,那麼遞迴的方式如何呢?
我們一起思考,等下次更博再貼出我的**。
二叉樹列印
舉例 1.初始化時,last 1,把1放入佇列 2.將1出隊,把1的子孩子2,3放入佇列,更新nlast 3 3.nlast更新完之後,列印上一次出隊的1,並和last比較,如果相同就列印換行,並更新last nlast 3 4.將2出隊,把2的子孩子4放入佇列,更新nlast 4 5,nlast更...
二叉樹列印
給定一顆二叉樹的頭節點head,請按照現在大家看到的這種格式列印 要求列印成 12 主要解決的問題是 如何換行 last 表示正在列印的當前行的最右節點 從左至右遍歷,如果遍歷到last節點,說明該換行了,換行之後,只需要nlast last,繼續下一行的列印過程,一直重複,直到所有的節點都列印完。...
列印二叉樹
之前在了解二叉樹旋轉的時候,為了方便檢視中間狀態,就寫了個以樹狀形式列印二叉樹的函式。起初是使用二叉樹中序遍歷的結果展開的方式,簡單但列印出來的樹有一定的傾斜。例如這棵樹 5 3 7 2 6 8它的中序遍歷結果為 2 3 5 6 7 8 列印出來的結果中,節點 3 和節點 7 不是對稱的。因為節點 ...