遞迴的一點思考

2021-07-01 20:46:30 字數 1145 閱讀 6403

廢話不說,直接上**。

searchtree delete(int x,searchtree t)

else

if(t->left ==

null)//沒有兒子的情況也包含了,因為t->right 為null

else

}else

if(x>t->element )

t->right =delete (x,t->right );

else

t->left=delete (x,t->right );

return t;

}

這是乙個刪除二叉查詢樹的例子,非常常見。

之前對遞迴一直處於渾渾噩噩的狀態,半知半解。後來突然就恍然大悟了。一點心得如下:

if(t==null);//節點為空

(x==t->element );//找到

(x>t->element );//大於

(xelement );//小於

2.將每一步仔細分析

若為空返回;

找到了以後,分類討論;

if(t->left &&t->right )

else

if(t->left ==

null)//沒有兒子的情況也包含了,因為t->right 為null

else

若大於;

t->right =delete (x,t->right );
對右子樹做刪除操作。

若小於;

t->left=delete (x,t->right );
對左子樹做刪除操作。

其實關鍵在於不需要去追溯左右子樹如何如何,最終都將是在乙個節點上進行操作,也就是那幾個基準情況。

保證基準情況正確,並且保證能朝著基準推進即可,因為遞迴四條基本法則第三條(來自資料結構與演算法分析-c描述,weiss):設計法則的意義就是假設所有遞迴呼叫可以執行,其實在此與其說是「假設」,當接觸遞迴之後你會發現,這裡不如說是「隱含」。

一點BPXA的思考

懂的人自然懂。bpxa功能配置 這個概念現在還有印象,記錄下來 一,bpxa是用於bp使用第三方資源的。如使用oracle資料庫,就是在xa裡配置。它的特徵是以開頭 二,bpxa有自己的kcxp佇列。這個佇列是自己的,還是寄生在已有的kcxp佇列中,無影響。三,bpxa在配置kcbp之間的交換資源時...

一點BPXA的思考

懂的人自然懂。bpxa功能配置 這個概念現在還有印象,記錄下來 一,bpxa是用於bp使用第三方資源的。如使用oracle資料庫,就是在xa裡配置。它的特徵是以開頭 二,bpxa有自己的kcxp佇列。這個佇列是自己的,還是寄生在已有的kcxp佇列中,無影響。三,bpxa在配置kcbp之間的交換資源時...

他們寫的,一點思考,一點敬意

技術的正宗與野路子 我們的大腦好比記憶體。既然是記憶體,就裝不下所有的知識。但應該能裝下對於知識的索引,否則我們便沒法工作了。啊,我的程式為啥卡住啦 本文簡答介紹在linux環境下如何利用gdb來分析卡住的程式,本文使用的python為cpython2.7。2019,能否解開時間的困局?通常在年初的...