我必須編寫一些BST的方法,我有一些問題,讓我解釋一下。BST與遞歸和給定的結構
我具有以下結構:
struct node {
struct node *lChild;
struct node *rChild;
int value;
};
和
struct tree {
struct node *root;
};
具有以下功能沿着:
struct tree* constructNewTree()
{
struct tree *T=malloc(sizeof(struct tree));
T->root=NULL;
return T;
}
和
struct node* constructNewNode(int i)
{
struct node *N=malloc(sizeof(struct node));
N->value=i;
N->lChild=NULL;
N->rChild=NULL;
return N;
}
在我主我必須調用此(例如):
int main()
{
struct tree *T;
T=constructNewTree();
insertKey(5,T);
insertKey(2,T);
insertKey(9,T);
return 0;
}
我要做的就是創建功能insertKey(INT I,結構樹* T)使用遞歸。
我想做一些像
void insertKey(int i, struct tree *T)
{
if (T->root==NULL) {
T->root=constructNewNode(i);
return;
}
else {
if (i<=T->root->value) {
T->root->lChild=constructNewNode(i);
else if (i>T->root->value) {
T->root->rChild=constructNewNode(i);
}
}
}
但是它沒有得到很遠,使用遞歸,讓我再次打電話insertKey,但我似乎無法使用節點和樹同樣的方式。
有誰知道我怎麼能做到這一點,而不改變給定的結構?
非常感謝。
這看起來像是一個家庭作業問題。標籤更新得當。 – BMitch 2011-03-20 18:21:29