我想问一个关于将元素插入二叉树的问题,我需要将元素插入表中。但是,我想我误解了指针之类的东西,我无法创建二叉树。
插入函数由另一个包含主函数的文件调用,因此插入函数会定期调用,直到插入所有元素。然后 insert 函数调用 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;
}