劍指offer 從上往下列印二叉樹

2021-10-02 08:20:41 字數 800 閱讀 1791

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。

二叉樹的廣度優先遍歷

/*

struct treenode

};*/

class

solution

return res;}}

;

說到遍歷,dfs的遞迴和非遞迴寫法非常熟悉,我心血來潮,覺得bfs的遞迴寫法好像很陌生啊,於是開始寫:

void

bfs(treenode * root)

what?我怎麼連bfs的遞迴寫法都不會了?這些不應該是資料結構課的基本知識嗎?(實際上資料結構課我都忘了)

我簡單查了一下資料,結合自己思考,得到如下認知:

/*

struct treenode

};*/

class

solution

bfs(cur_);}

public

: vector<

int>

printfromtoptobottom

(treenode* root)

};

主要思路是在dfs過程中記錄當前節點的高度,並將相同高度的節點放到一起,最後使用二維陣列儲存所有層的所有節點。

(1)查資料的時候遇到乙個有意思的題目:給定一顆完全二叉樹,求此完全二叉樹的節點數。要求時間複雜度小於o(n)

劍指offer 從上往下列印二叉樹

定義乙個佇列,依次加入佇列頭的子節點,並將佇列頭出佇列,知道隊列為空 coding utf 8 class treenode def init self,x self.val x self.left none self.right none class solution 返回從上到下每個節點值列表,...

劍指offer 從上往下列印二叉樹

題目描述 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。其實就是二叉樹的層序遍歷 遍歷結果 a b c d e f g h 先存進去的節點先列印,這樣的特性不就和佇列fifo的特性相同了嗎?處理的方法就是將二叉樹的節點從上到下,從左到右的存入佇列中,然後逐個列印。struct treenod...

劍指offer 從上往下列印二叉樹

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。用乙個佇列就可以解決。struct treenode class solution return result 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。struct treenode class solution if p...