二叉排序樹的構造和查詢方法是什麼

2021-03-04 04:41:01 字數 555 閱讀 8302

1樓:匿名使用者

二叉排序樹的構造過程:按照給定序列,以此將結點插入二叉排序樹中,在二叉排序樹中插入新結點,要保證插入後的二叉樹仍符合二叉排序樹的定義。

插入過程:若二叉排序樹為空,則待插入結點*s作為根結點插入到空樹中;

當非空時,將待插結點關鍵字s->key和樹根關鍵字t->key進行比較,

若s->key = t->key,則無須插入,若s->key< t->key,則插入到根的左子樹中,

若s->key> t->key,則插入到根的右子樹中。而子樹中的插入過程和在樹中的插入過程相同,

如此進行下去,直到把結點*s作為乙個新的樹葉插入到二叉排序樹中,或者直到發現樹已有相同關鍵字的結點為止。

說明:① 每次插入的新結點都是二叉排序樹上新的葉子結點。

② 由不同順序的關鍵字序列,會得到不同二叉排序樹。

③ 對於乙個任意的關鍵字序列構造一棵二叉排序樹,其實質上對關鍵字進行排序。

查詢的過程類似,從根結點開始進行比較,小於根結點的在左子樹上,大於根結點的在右子樹上,以此查詢下去,直到查詢成功或不成功(比較到葉子結點)。

什么是二叉排序樹,什麼是二叉排序樹

二叉排序樹 binary sort tree 首先它是一棵樹,二叉 這個描述已經很明顯了,就是樹上的一根樹枝開兩個叉,於是遞迴下來就是二叉樹了 下圖所示 而這棵樹上的節點是已經排好序的,具體的排序規則如下 若左子樹不空,則左子樹上所有節點的值均小於它的根節點的值若右子樹不空,則右字數上所有節點的值均...

請問平衡二叉樹和二叉排序樹的關係

看你的插入演算法是怎樣的了,平衡二叉樹未必是二叉排序樹,比如二路堆就可以實現為平衡二叉樹,且非二叉排序樹。平衡二叉樹和二叉排序樹沒有關係,他們的定義都不相同。由於平衡二叉樹的設計是為了改進二叉排序樹的效能,所以他的插入和刪除按排序樹的來 平衡二叉樹一定是二叉排序樹?我覺得只有在用平衡二叉樹進行查詢或...

二叉排序樹的實現用順序和二叉連結串列作儲存結構

ude string.h include define max 20 結點的最大個數 typedef struct nodebintnode 自定義二叉樹的結點型別 typedef bintnode bintree 定義二叉樹的指標 int nodenum,leaf nodenum為結點數,leaf...