我想在C中使BST樹結構,但我有一些困難,讓我的插入功能工作。在閱讀了一些例子之後,我發現最好的方法是傳遞一個指向樹根的指針,然後在該節點上遞歸地插入,直到找到一個空的節點(NULL)。不過,我想在整個樹結構(只是讓一切都整齊地封裝)來傳遞,我想我想出了以下解決方案:二進制搜索樹插入在C中無法正常工作(可能是一個無知的錯誤)
void insert(struct Node* temp, char *s){
if (temp == NULL) {
struct Node *newNode = make_node();
newNode-> data = strdup(s);
temp = newNode;
return;
}
if (strcmp(s,temp->data) > 0) {
temp = temp->left;
insert(temp, s);
}
if (strcmp(s,temp->data) < 0) {
temp = temp->right;
insert(temp, s);
}
}
//--------------------------------------------------------------
void insert_tree(struct BSP * tree, char *s) {
struct Node *temp = tree->root;
insert(temp, s);
}
//-------------------------------------------------------------
當我插入的樹,我叫insert_tree( ),但後來我使用insert()作爲遞歸插入應該指向樹根的節點的一種方式。 P.S的BSP的結構和節點是:
typedef struct Node {
struct Node * left;
struct Node * right;
char * data;
} node;
typedef struct BSP {
struct Node * root;
int size;
}
誰能幫助我理解我在做什麼錯?
究竟發生了什麼問題? – JeremyP 2015-03-13 14:45:22
什麼是無知的錯誤?我的錯誤往往很文盲。 – dhein 2017-07-28 09:40:08