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...