由於二叉查詢樹在理想狀態下的高效的效能以及無法保證效能下限的缺點,如何去優化它就十分有意義。優化的思路很自然的想到:只要在插入過程中盡量使樹保持平衡,就能保證它的效能下限。如何實現這一點,幸運的我們已經由前人想到了非常聰明的解決辦法:2-3 查詢樹。
一顆2-3 查詢樹或為空樹,或為以下節點組成:
一顆完美平衡的2-3查詢樹的所有空連線到根節點的距離都是相等的
以 123456789
1 2 3 4 5 6 7 8 9
123456
789 插入到空的 2-3 樹為例子:
儘管可以使用不同的資料型別標識 2- 節點和 3- 節點並寫出變換所需的**,但是使用這種直白的標識方法實現大多數的操作並不方便,因為需要處理的情況實在太多。實現這些不僅需要大量的**,而且他們所產生的額外開銷可能回事演算法比標註你的二叉查詢樹更慢。
且他們所產生的額外開銷可能回事演算法比標註你的二叉查詢樹更慢。
更為簡單的實現:紅黑二叉查詢樹
樹的同構的個人理解
include include define maxtree 10 define elementtype char define tree int define null 1 struct treenode t1 maxtree t2 maxtree tree buildtree struct tr...
個人總結23
個人總結23 小組感悟 經過這乙個月的努力,我們的專案終於在昨天下午和晚上進行了展示和講解。我們也看到了別人做的專案,每個組做的 不同,特點也不同,但我們都有需要改進的地方。就比如說我們的購物 吧!功能並沒有完全實現,頁面都還沒有套完,只能說還是乙個半成品,所以之後我們還要再進行完善,這畢竟是我們做...
函式式線段樹的個人理解
這幾天一直在搞這個東西,今天總算搞懂了,函式式線段樹是一種解決離線演算法的資料結構,我是這樣理解的,它將所有資料離散化,再對每乙個節點 n 建一顆 1,n 的線段樹,這是它的思路,當然如果真正的去建這麼多線段樹,記憶體肯定爆了,所以這個就是函式式線段樹的高階的地方,它從分利用字首和的思想,後一顆樹和...