二分木への要素の挿入について質問したいのですが、テーブルに要素を挿入する必要があります。ただ、二分木が作れないというポインタなどを誤解していたと思います。
挿入関数は、メイン関数を含む別のファイルによって呼び出されるため、すべての要素が挿入されるまで、挿入関数が定期的に呼び出されます。次に、挿入関数はsub_insertを呼び出して、すべての要素を挿入します。二分木を読み込もうとしたところ、空でした。誰かが修正するものを提案できますか?
typedef struct node * tree_ptr;
/*typedef char* Key_Type; */
struct node {
Key_Type element; // only data is the key itself
tree_ptr left, right;
int depth;
};
struct table {
tree_ptr head; // points to the head of the tree
};
struct table head,tail;
struct node* newNode(Key_Type key){
struct node* node=(struct node*)malloc(sizeof(struct node));
node->element=key;
node->left=NULL;
node->right=NULL;
return (node);
}
tree_ptr sub_insert(Key_Type key, struct node *node, Table table) {
printf("reading... %s\n", key);
if(node==NULL)
return(newNode(key));
else
{
if(key <= node->element){
printf("inserted");
node->left = sub_insert(key, node->left, table);
}else{
node->right = sub_insert(key, node->right, table);
}
return node;
}
}
Table insert(Key_Type key, Table table) {
struct node* root=NULL;
root=sub_insert(key, root, table);
return table;
}