我有一个包含书名,网址和学生姓名的图书结构。我想将此数据插入二叉树。我已经编写了这些函数,但在尝试打印树时无法获得输出。
1)我的插入功能看起来是否正确?
2)我的printTree功能看起来是否正确?
3)当我调用printTree函数时,我正在传递指针。如果我想从根目录下打印,我作为根传递什么?
相关代码如下:
typedef struct book {
char title[75];
char url[75];
char student[50];
} BOOK;
struct tree_node {
BOOK data;
struct tree_node *left;
struct tree_node *right;
};
int insert_book() { // insert an new book
BOOK contact;
cout << endl << "@Inserting Book.........." << endl;
cout << "Enter the Book Title: ";
cin.ignore();
cin.getline(contact.title, 75);
cout << "Enter the Book URL: ";
cin.getline(contact.url, 75);
cout << "Enter the Student: ";
cin.getline(contact.student, 50);
void insert(BOOK, tree_node);
return 0;
}
struct tree_node * insert(BOOK contact, struct tree_node* node) {
if(node == NULL)
return(create_node(contact));
else if(strcmp(contact.student, node->data.student) <= 0)
node->left = insert(contact, node->left);
else if(strcmp(contact.student, node->data.student) >= 0)
node->right = insert(contact, node->right);
return (node);
}
struct tree_node* create_node(BOOK contact) {
struct tree_node* node = new(struct tree_node);
node->data = contact;
node->left = NULL;
node->right = NULL;
return(node);
}
void printTree(struct tree_node* node) {
if (node == NULL)
cout << "Empty!" << endl;
if(node != NULL) {
printTree(node->left);
printf("%d ", node->data);
printTree(node->right);
}
}
答案 0 :(得分:0)
我不会在void insert(BOOK, tree_node);
中看到int insert_book()
的内容。它看起来像是一个前瞻性声明,但我从来没有见过另一个功能。它编译吗?
尝试将void insert(BOOK, tree_node);
更改为insert(contact, NULL);
,它应该有效。 Haven没有对它进行过严格的测试。
答案 1 :(得分:0)
另外注意,你使用的是c ++,但是采用非常简洁的方式编码。我会考虑重新组织代码以提高可读性。