c++创建二叉树_数据结构:查找(4)|| 平衡二叉树
在介紹平衡二叉樹之前,應該先了解平衡因子的概念,平衡因子定義為左子樹深度減去右子樹深度,這個值的絕對值越大,非常容易理解它就對應著越不平衡的情況。一棵平衡的二叉樹的平衡因子只能是1,0,-1
如何構建一棵平衡二叉樹呢?
對一棵平衡的二叉樹進行插入操作,插入后,可能導致不平衡,對不平衡的二叉樹應該進行旋轉操作,將其旋轉為平衡二叉樹。平衡二叉樹應該具有二叉樹的性質的同時滿足平衡條件。
如何進行旋轉操作?
旋轉操作實際上是對不平衡部分進行再調整的過程。
是對二叉樹的局部重排。
書上將旋轉操作劃分為4種情況,并分別用了幾個看不懂的圖和介紹來試圖讓我們搞懂,我重新畫了一個圖,介紹在插入C結點后需要進行局部調整時如何進行旋轉。
如圖黃色框區域,需要進行局部調整
局部調整由排列組合,共有以下四種情況
有了以上的理論基礎我們就可以寫出
在平衡二叉樹上插入新元素e的遞歸算法
①(創建新樹,遞歸出口1)若原二叉樹為空樹,則插入結點為根節點,樹的深度加1
②(查找存在,遞歸出口2)若e的關鍵字和根節點的關鍵字相同,停止插入
③(查找不存在,執行插入,遞歸出口3)插入
③.①?插入過程,需要更新結點的平衡因子,深度出現異常進行旋轉
④(遞歸入口)進入左子樹或右子樹,在左/右子樹插入C
有了以上的講解,寫出想要的代碼就不是什么難事啦~
挖坑:
接下來一周,將盡量完成B樹、鍵樹、哈希表
考試周期間對數據結構進行系統復習時,將補上圖、內外排序部分的內容
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的c++创建二叉树_数据结构:查找(4)|| 平衡二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几个重要的java数据库访问类和接口
- 下一篇: java response 输出流_ja