1、空樹是平衡二叉樹。
2、如果一棵樹不為空,並且其中所有的子樹都滿足各自的左子樹與右子樹的高度差都不超過 1。
下面介紹乙個簡單應用,平衡二叉樹的相關操作以後補充。
給定一顆二叉樹的頭結點 head,判斷一棵樹是否是平衡二叉樹。
1.1、左子樹是否為平衡二叉樹
1.2、記錄左子樹的深度,最深到達哪一層,記為 lh
2.1、右子樹是否為平衡二叉樹
2.2、記錄右子樹的深度,最深到達哪一層,記為 rh
3、如果左子樹或右子樹有乙個不是平衡二叉樹,則整棵樹就不是平衡二叉樹
4、如果左、右子樹都是平衡二叉樹,那麼再比較兩者深度的差值,如果大於 1,那麼就不是平衡二叉樹,否則就是平衡二叉樹。
publicboolean
check(treenode root)
private
int getheight(treenode head, int level, boolean
res)
平衡二叉樹 資料結構實驗之查詢二 平衡二叉樹
剛開始接觸平衡二叉樹,沒有什麼太多要分析的。部落格裡有很多大佬們都寫的很好。平衡二叉樹就是每個節點的子樹的高度差不超過1的二叉樹。可以快速搜尋數值的一種演算法,最糟的情況就是一直找到底,但也是log n 的。還是快很多。include include include define max a b a...
資料結構 二叉樹 2 平衡二叉樹 3
前面分析了平衡二叉樹是怎麼調整平衡的,這裡就來解決另乙個問題,平衡二叉樹理論為什麼能成立?難道就不會有怎麼調都不會平衡的情況嗎?一起 一下吧。我在很早的時候就注意到了乙個問題。上圖中是一顆不平衡的二叉樹向平衡調整的一部分過程,這個過程中我發現,子樹a,b,c,d的左右關係始終都是不變的,就是從左到右...
資料結構之 平衡二叉樹總結
敲這個題時,預備知識是知道四種旋轉方式,分別是ll rr lr rl,對應每一種的變換方式要做到會旋轉,會寫關鍵的 這個題是參照一篇部落格寫的,然後自己又理解了一遍。include include include struct node int max int a,int b int deep st...