ノードをツリーに順番に挿入しようとしています。私の機能は正常に動作します...ノードが3つしかない場合。
私はこのコードを持っています:
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;
}
ここで何が問題なのかはわかっていますが、それを修正する方法がわかりません。これは、ルート ノードに接続されている 2 つのノードを上書きするだけです。すなわち
|root_node|
/ \
|node_2| |node_3|
ノード 4 を追加できません。入力に応じて、ノード 2 または 3 を上書きするだけです。デバッグと少しの調査の後、ここからどこに行くべきかよくわかりません...
誰かが助けてくれれば、本当に感謝しています。