更新時(shí)間:2021-02-02 17:18:33 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1361次
隨機(jī)測試是根據(jù)測試說明書執(zhí)行用例測試的重要補(bǔ)充手段,是保證測試覆蓋完整性的有效方式和過程。紅黑樹是一種特定類型的二叉樹,對(duì)紅黑樹這一數(shù)據(jù)結(jié)構(gòu)準(zhǔn)確性的測試主要考察以下操作:插入,刪除,查詢,遍歷和驗(yàn)證。本文我們就通過較為直觀的例子來簡單分析一下紅黑樹隨機(jī)測試。
紅黑樹的插入和刪除操作由inset和remove實(shí)現(xiàn),查詢操作在插入和刪除操作時(shí)會(huì)間接調(diào)用,由find實(shí)現(xiàn),遍歷操作分為正序(由minimum和next實(shí)現(xiàn))和逆序遍歷(由maximim和prev實(shí)現(xiàn)),驗(yàn)證操作主要是驗(yàn)證插入和刪除后紅黑樹的合法性,由validate實(shí)現(xiàn)。至于其他和紅黑樹統(tǒng)計(jì)特性相關(guān)的操作,比如獲取樹高、節(jié)點(diǎn)數(shù)和累計(jì)的旋轉(zhuǎn)次數(shù)等可以很容易實(shí)現(xiàn)。
我們使用隨機(jī)數(shù)產(chǎn)生器隨機(jī)產(chǎn)生一批數(shù)據(jù)插入到紅黑樹內(nèi),然后再隨機(jī)產(chǎn)生一批數(shù)據(jù)作為刪除操作的參數(shù)。其中每次插入和刪除時(shí)都會(huì)對(duì)樹的合法性進(jìn)行驗(yàn)證,并且在插入后刪除數(shù)據(jù)結(jié)束后以正序和逆序的方式輸出紅黑樹的節(jié)點(diǎn)以及其他統(tǒng)計(jì)信息。測試代碼如下:
#include"rb_tree.h"
#include
#include
int main()
{
????srand((unsigned)GetCurrentTime());
????int times=10,len=30;
????while(times--)
????{
????????rb_tree tree;
????????for(int i=0;i::node_type*node=tree.minimum();node;node=tree.next(node))
????????{
????????????cout<value<<" ";
????????}
????????cout<<"\n旋轉(zhuǎn)次數(shù)-黑高-節(jié)點(diǎn)數(shù):"<::node_type*node=tree.maximum();node;node=tree.prev(node))
????????{
????????????cout<value<<" ";
????????}
????????cout<<"\n旋轉(zhuǎn)次數(shù)-黑高-節(jié)點(diǎn)數(shù):"<
經(jīng)過大量的循環(huán)隨機(jī)測試,可以驗(yàn)證紅黑樹數(shù)據(jù)結(jié)構(gòu)的穩(wěn)定性以及平衡性調(diào)整算法的正確性,下邊是測試結(jié)果的部分截圖。
綜上所述,我們?cè)趯?duì)紅黑樹數(shù)據(jù)結(jié)構(gòu)有了充分地了解,尤其是掌握學(xué)習(xí)了復(fù)雜的紅黑樹的插入刪除平衡性調(diào)整算法之后,最后進(jìn)行的隨機(jī)測紅黑樹的核心算法的正確性。通過對(duì)紅黑樹數(shù)據(jù)結(jié)構(gòu)的詳盡剖析,能夠讓我們對(duì)數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)學(xué)科的重要性有了更充分地認(rèn)識(shí),在本站的數(shù)據(jù)結(jié)構(gòu)和算法教程中還有大量的精彩紛呈的數(shù)據(jù)結(jié)構(gòu)的知識(shí),快來學(xué)習(xí)吧!
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743