我正在尝试按顺序将节点插入树中。我的功能工作正常......当只有三个节点时。
我有这个代码:
typedef struct _Tnode Tnode;
struct _Tnode {
char* data;
Tnode* left;
Tnode* right;
};
除此之外:
Tnode* add_tnode(Tnode* current_node, char* value) {
Tnode* ret_value;
if(current_node == NULL) {
current_node = (Tnode*) malloc(sizeof(Tnode));
if(current_node != NULL) {
(current_node)->data = value;
(current_node)->left = NULL;
(current_node)->right = NULL;
ret_value = current_node; }
else
printf("no memory");
}
else {
if(strcmp(current_node->data,value)) { //left for less than
ret_value = add_tnode((current_node->left), value);
current_node -> left = (Tnode*) malloc(sizeof(Tnode));
(current_node -> left) -> data = value;
}
else if(strcmp(current_node->data,value) > 0) {
ret_value = add_tnode((current_node -> right), value);
current_node -> right = (Tnode*) malloc(sizeof(Tnode));
(current_node -> right) -> data = value;
}
else {
printf("duplicate\n");
ret_value = current_node;
}
}
return ret_value;
}
我知道这里出了什么问题,我只是不知道如何解决它。这只是覆盖连接到根节点的两个节点。IE
|root_node|
/ \
|node_2| |node_3|
我无法添加节点 4。它只是根据输入覆盖节点 2 或 3。经过调试和一些研究,我不太确定从这里去哪里......
如果有人可以提供帮助,我将不胜感激。