資料結構與演算法分析C語言描述第二版第79頁

2022-01-11 15:21:13 字數 336 閱讀 3860

這一節講解的是二叉查詢樹,書中這一頁有乙個地方讓我比較疑惑,原文是:

「如果向一棵預先排序的樹輸入資料,那麼一連串insert操作將花費二次時間,而鍊錶實現的代價會非常巨大,因為此時的樹將只由那些沒有左兒子的節點組成。」

這裡為什麼是花費二次時間,這就是我的疑惑點,然後在知乎找到了答案。該回答簡單理解就是,因為是預先排好序的樹,所以我們可以想象我們輸入的數是一組從小到大排好序的數列,然後逐個插入,那麼按照這樣的情況,我們每一次插入都是插入在上乙個節點的右子樹上面,此時這棵樹就退化成了乙個簡單的鍊錶,而我們知道,鍊錶的一次插入操作的時間是o(n),那麼,一連串的insert操作自然花費的就是二次時間了。

參考:

資料結構與演算法分析 C語言描述

第一種方法,先進行排序,再返回位置k上的元素。簡單排序問題 第二種方法,先將前k個元素讀入,再將剩下的元素逐個讀入,如果新元素大於陣列中第k個元素就找到他合適的位置並將陣列中的乙個元素擠出。第三種方法,利用快排的特點 假設預設公升序排序 每一次快排操作都能確定乙個數在排序結果中的最終固定位置,即該位...

資料結構與演算法分析 c 語言描述

編寫帶有下列宣告的兩個例程 void permute string str void permute char str,int low,int high 第乙個例程是個驅動程式,它呼叫第二個例程並顯示string str中字元的所有排列。例如,str是 abc 那麼輸出的串則是abc,acb,bac...

《資料結構與演算法分析(C 語言描述)》

第1章 uml教程 更多軟體恐怖故事 nist新聞稿 軟體錯誤每年給美國經濟造成595億美元的損失 nist報告本身 pdf 第2章 ieee對實數的反感 c 的按位運算子 第3章 工會 記憶體結構 第5章模式匹配 資料加密 第9章用位集實現集 有關valarrays的更多資訊 第10章 用於解析表...