二叉排序樹

2021-09-12 07:18:37 字數 543 閱讀 4275

二叉排序樹是一棵特殊的二叉樹,它是一棵二叉樹但同時滿足如下條件:

對於樹上任意乙個結點,其上的數值必大於等於其左子樹上任意結點數值,必小於等於其右子樹上任意結點的數值。

二叉排序樹的儲存方式與二叉樹保持一致。

從二叉樹的插入開始了解其建樹方式,對二叉排序樹插入數字x:

1.若當前樹為空,則x為其根結點。

2.若當前結點大於x,則x插入其左子樹;若當前結點小於x,則x插入其右子樹;若當前結點等於x,則根據具體情況選擇插入左右子樹或者直接忽略。

以插入4、2、6、1、3為例,其二叉排序樹變化情況如下圖:

由於各個數字插入的順序不同,所得到的二叉排序樹的形態也很可能不同,所以不同的插入順序對二叉排序樹的形態有重要的影響。

但是,所有的二叉排序樹都有乙個共同的特點:若對二叉排序樹進行中序遍歷,那麼其遍歷結果必然是乙個遞增序列,這也是二叉排序樹名字的來由,通過建立二叉排序樹就能對原無序序列進行排序,並實現動態維護。

二叉排序樹

在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態鍊錶,要達到查詢複雜度為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 ...