樹採用順序陣列方式儲存,從下表0開始儲存,i的左孩子是2 * i + 1,右孩子是2 * i + 2
1 template2 std::ostream& operator效果:<< (std::ostream& out, const myseqtree&item)315
sqnode sn, sn2;
16 sn.dt = item.getnode(0
);17 sn.index = 0;18
/*計算順序儲存的樹的深度
*/19
int depth, num = 1;20
for (depth = 0; num - 1
<= lay; depth++)
21 num *= 2;22
23 nhigh =depth;
2425
/*第一層結點進佇列
*/26
queue.enqueue(sn);
27 sqnode end; //
乙個end結點
28 end.dt = '#'
;29 queue.enqueue(end); //
用『#'代表層結束
3031
for (d = nhigh; d >= 1; d--) //
從第一層根開始輸出到最後一層
3251
52out
<< endl; //
一層的結點資料輸出結束,回車
53if (d == 1) break; //
如果是最後一層,不用輸出下面的鏈結字元
5455
out<< "\t"
;56/*第二步,輸出每層結點與其子結點的第一行鏈結字元
*/57
for(;;)
5883
out<
8485
/*第三步,輸出每層結點與其子結點的第二行鏈結字元
*/86
if (d != 2)87
112out
<
113}
114115
116/*
第四步,更新佇列中的結點,即把佇列中的結點換成下一層的結點
*/117
for(;;)
118129
130if (sn.index * 2 + 2
<=lay)
131137
138}
139queue.enqueue(end);
140141
}142
143return
out;
144 }
參考文章:
文字域實現文字環繞的效果
估計你看到這個標題是懵逼的,直接上圖吧!下面那個 退訂 那個位置好實現,可是上面那個 簽名 的文字環繞效果要怎麼實現呢?一開始想的是浮動,但是文字域不像單純的文字,無法實現這種文字環繞,該方案pass。後面想著單純用絕對定位,發現遇到的問題跟浮動是一樣的,該方案pass。後面一想,這個樣子不就是所謂...
文字閱讀的功能實現
由於硬體的限制導致不可能一次性將txt文件全部都讀取出來。需要一段一段將其讀取出來。現設定每次讀取的大小為filesize。而txt文件中會是ascii碼和gb2312碼的集合。ascii碼占用乙個位元組,而gb2312占用兩個位元組。每次讀取filesize大小的內容時,可能會導致將乙個gb231...
文字比較演算法的實現
這段時間很忙,呵呵,沒時間寫blog。前兩天看了乙個文字比較的演算法,演算法的思路我就不多說了,主要說下我的實現。演算法參考 文字比較演算法剖析 1 如何確定最大匹配率 文字比較演算法剖析 2 如何確定最優匹配路徑 我的實現步驟是 1 計算出所有可行的路徑 如下圖中,n l,r 所在的位置如果該位置...