閱讀以下說(shuō)明、C 函數(shù)和問(wèn)題,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
二叉查找樹(shù)又稱為二叉排序樹(shù),它或者是一棵空樹(shù),或者是具有如下性質(zhì)的二叉樹(shù):
若它的左子樹(shù)非空,則其左子樹(shù)上所有結(jié)點(diǎn)的鍵值均小于根結(jié)點(diǎn)的鍵值;
若它的右子樹(shù)非空,則其右子樹(shù)上所有結(jié)點(diǎn)的鍵值均大于根結(jié)點(diǎn)的鍵值;
左、右子樹(shù)本身就是二叉查找樹(shù)。
設(shè)二叉查找樹(shù)采用二叉鏈表存儲(chǔ)結(jié)構(gòu),鏈表結(jié)點(diǎn)類型定義如下:
typedef struct BiTnode{
int key_value; /*結(jié)點(diǎn)的鍵值,為非負(fù)整數(shù)*/
struct BiTnode *left,*right; /*結(jié)點(diǎn)的左、右子樹(shù)指針*/
}*BSTree;
函數(shù)find_key(root, key)的功能是用遞歸方式在給定的二叉查找樹(shù)(root指向根結(jié)點(diǎn))中查找鍵值為key的結(jié)點(diǎn)并返回結(jié)點(diǎn)的指針;若找不到,則返回空指針。
【函數(shù)】
BSTree find_key(BSTree root, int key)
{
if ( (1) )
return NULL;
else
if (key == root-> key_value)
return (2) ;
else if (key < root -> key_value)
return (3) ;
else
return (4) ;
}
【問(wèn)題1】
請(qǐng)將函數(shù)find_key中應(yīng)填入(1)~(4)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【問(wèn)題2】
若某二叉查找樹(shù)中有n個(gè)結(jié)點(diǎn),則查找一個(gè)給定關(guān)鍵字時(shí),需要比較的結(jié)點(diǎn)個(gè)數(shù)取決于 (5) 。