1、定義spa
1.若它的左子樹不爲空,則左子樹上全部結點的值均小於等於根結點的值;3d
2.若它的右子樹不爲空,則右子樹上全部結點的值均大於等於根結點的值;blog
3.它的左右子樹均爲二分查找樹。for循環
2、圖解實例效率
選取一個節點爲參照根節點,會發現全部的左側子節點小於等於參照點,右側大於等於參照點。二叉樹
好比根節點9, 9全部的左側子節點(五、二、七、一、3)都小於等於9.循環
好比根節點13,13全部的左側子節點(十一、十、12)都大於等於13.引用
一、查找im
查找節點 10:根節點9開始,10>9 右側,10<13 左側,10<11 左側,找到10.查詢
二、插入
插入 子節點 4:4<9 左側,4<5 左側,4>2 右側,4>3 右側
三、刪除
刪除節點(由於狀況有多種,處理邏輯也是比較麻煩。)
A:刪除葉子:好吧就是一個乾巴巴的葉子,好辦,找到-刪除。
刪除 7 ,這個7是葉子,那就找到並刪除
B:有一個分支的,刪除節點,子節點上提。
刪除 2節點:找到2 ,刪除2
再上提子節點 1
C:兩個分支,節點刪除,右子樹最小的數代替被刪除節點,
由於右子樹最多有一個右葉子,從新指定引用。
刪除 13,13有左右兩個分支:
由於 右分支確定大於左面分支,因此上提右子節點 15
4、其實三已經告訴了咱們,會有一種極端狀況
二分查找樹就是爲了提升查詢效率,而當前這種和咱們寫了一堆for循環是同樣的。
爲了應對這種狀況:又出現了平衡二叉樹--紅黑樹。後面會提到。