線索二叉樹的線索化演算法
在嚴蔚敏的《資料結構》一書中,所使用的程式碼存在一些小問題。原版程式碼就不附上了,主要問題是:
1.InThreading函式的引數,應該攜帶pre,這應該是比較嚴重的問題。如果沒有攜帶pre,則對pre的修改只是在呼叫的函式中的區域性變數的值的修改,沒有影響到原來的pre的值。
2.在條件語句中,將命中概率高的語句放在前面,會提高程式碼效率。但嚴的演算法中在InOrderThreading演算法中,將T為NULL時放在了前面。
3.InOrderThreading中,只有T為NULL時,執行Thrt->rchild = Thrt才有意義。而在T不為NULL時,要執行Thrt->rchild = pre,即使開始執行了Thrt->rchild = Thrt,也會被覆蓋掉,所以把Thrt->rchild = Thrt句移到了else分句中。
Status InOrderThreading(BiTree Thrt, BiTree T) { Thrt->LTag = Link; Thrt->RTag = Thread; if(T) { Thrt->lchild = T; pre = Thrt; InThreading(T, pre); pre->RTag = Thread; pre->rchild = Thrt; Thrt->rchild = pre; } else { Thrt->lchild = T; Thrt->rchild = Thrt; } }
void InTreading(BiTree p, BiTree pre) { if(p) { InThreading(p->lchild, pre); if(!p->lchild) { p->LTag = Thread; p->lchild = pre; } if(!pre->rchild) { pre->RTag = Thread; p->rchild = p; } pre = p; InThreading(p->rchild, pre); } }
歡迎討論、批評與指正!
ALex ZhonG
相關文章
- 線索二叉樹【定義、應用、線索化、遍歷】二叉樹
- 13、線索二叉樹二叉樹
- 輕鬆讓你徹底搞定c++版 線索二叉樹的線索化演算法C++二叉樹演算法
- 【筆記】線索二叉樹筆記二叉樹
- 二叉線索樹實現
- 【資料結構】二叉樹的線索化!!資料結構二叉樹
- 線索二叉樹的原理及建立二叉樹
- 資料結構之線索化二叉樹資料結構二叉樹
- 演算法線索二叉樹的建立和遍歷演算法二叉樹
- 二叉樹(順序儲存二叉樹,線索化二叉樹)二叉樹
- 線索二叉樹的構造和遍歷二叉樹
- 實戰資料結構(12)_二叉樹的線索化資料結構二叉樹
- 【資料結構&演算法】12-線索二叉樹資料結構演算法二叉樹
- 樹(2)--二叉樹的遍歷(非遞迴)+線索二叉樹二叉樹遞迴
- 中序線索二叉樹的建立與遍歷二叉樹
- 常用資料結構之線索二叉樹資料結構二叉樹
- 線索二叉樹 Threaded BinaryTree二叉樹thread
- java實現-資料結構之二叉樹(三):線索化二叉樹Java資料結構二叉樹
- 中序線索二叉樹的構造和遍歷二叉樹
- 論 如何畫線索二叉樹[資料結構]二叉樹資料結構
- 基於二叉樹的高效IP檢索格式MMDB二叉樹
- CRM系統如何自動分配線索
- 擊敗二分檢索演算法——插值檢索、快速檢索演算法
- 銷售線索是如何匯入CRM系統的?
- CTF學習(14)MISC(資料包中的線索)
- 訊息佇列Kafka「檢索元件」重磅上線!佇列Kafka元件
- 黑馬PM- B端產品-線索管理
- CRM軟體:企業如何高效培育銷售線索?
- CRM系統管理線索分為幾個步驟?
- 演算法隨筆——主席樹(可持久化線段樹)演算法持久化
- 如何透過CRM系統獲取更多銷售線索?
- SAP Marketing Cloud功能簡述(四) : 線索和客戶管理Cloud
- 初階技能:Android 應用異常如何豐富線索Android
- PostgreSQL一複合查詢SQL優化例子-(多個exists,範圍檢索,IN檢索,模糊檢索組合)SQL優化
- 基於ElasticSearch實現商品的全文檢索檢索Elasticsearch
- 可持久化線段樹持久化
- 資訊檢索
- 泛化索引---海量資料檢索的救星索引