樹的文字實現

2022-03-29 13:28:54 字數 1560 閱讀 1848

樹採用順序陣列方式儲存,從下表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 所在的位置如果該位置...