二叉排序樹

2021-08-02 05:22:53 字數 426 閱讀 8184

在二叉排序樹中刪除乙個結點時,不能把以該結點為根的子樹上結點都刪除,必須先把被刪除 的結點從儲存二叉排序樹的鍊錶上摘下。

1.如果被刪除結點z是葉子節點,那麼直接刪除,不會破壞二叉排序樹的性質;

2.如果節點z只有一顆左子樹好歐洲右子樹,則讓z的子樹成為z父結點的子樹,替代z的位置;

3.如果z有左右2棵子樹,那麼令z的直接後繼替代z,然後從二叉排序樹中刪去這個直接後繼(或者直接前驅),這樣就轉換成第一或第二種情況。

定義結點左子樹和右子樹的高度差為該結點的平衡因子,則平衡二叉樹結點的平衡因子值只可能是-1,0或者1

每當在二叉排序樹中插入乙個結點時候,首先要檢查其路徑上的結點是否因為此次操作導致了不平衡,則先找到插入路徑上離插入結點最近的平衡因子絕對值大於1的結點a。在以a為根的子樹,保持二叉排序樹的前提下,調整各節點之間的位置關係,重新達到平衡。

二叉排序樹

在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態鍊錶,要達到查詢複雜度為o logn 必須要求有序 而要使插入刪除複雜度為o 1 必須是鍊錶儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身在查詢過...

二叉排序樹

name 二叉排序樹相關操作 author unimen date 2011 10 8 13 14 21 刪除結點比較麻煩,總結如下 4大種情況 1 結點p無右孩子 將該點的左孩子變為其在雙親中的同位孩子 1 p為其雙親的左孩子時將其的左孩子變為雙親的左孩子 2 p為其雙親的右孩子時將其的左孩子變為...

二叉排序樹

include include include include struct tree node void insert node struct tree node int void pre order struct tree node void in order struct tree node ...