bfs實現二叉樹按行有序輸出

2021-07-05 10:55:32 字數 341 閱讀 4193

今天做了一道「南湖旁的樹」,考察到二叉樹層次遍歷(寬度優先),一般用佇列可實現,但要求按行輸出。在書上的程式都是依次便利而沒有按行輸出,修改了一番,每次佇列非空就都pop出來再push新的。因為二叉樹嘛,最多也就pop兩次,而且題目要求每行從小到大,還需要排序,也簡單,就兩個比較。

void bfs()

coutif(v[n].right) q.push(v[n].right);

}coutif(v[m].right) q.push(v[m].right);

cout<<"\n";

}注:程式用的是陣列模擬二叉樹而沒用指標,因為根據原題陣列會簡單點,但思想是一樣的。框架中佇列的應用簡直精髓!

有序二叉樹的實現

include include struct node typedef structtree typedef struct nodenode 樹的初始化函式 void tree init tree pt 樹的清理函式 void tree delete tree pt 統計有效節點個數 int tre...

按之字行列印二叉樹

題目描述 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。思路 我們首先確定用哪種容器來實現,這裡我們用兩個棧實現比較簡單,棧遵循先進後出的原則,並且只允許在固定的一端進行插入和刪除元素操作。這裡我用乙個...

二叉樹輸出

樹的凹入表示法主要用於樹的螢幕或列印輸出,其表示的基本思想是兄弟間等長,乙個結點的長度要不小於其子結點的長度。二叉樹也可以這樣表示,假設葉結點的長度為1,乙個非葉結點的長度等於它左右子樹的長度之和。一棵二叉樹的乙個結點用乙個字母表示 無重複 輸出時從根結點開始 每行輸出若干個結點字元 相同字元的個數...