Thêm dữ liệu vào cây tìm kiếm nhị phân

Em có code thêm dữ liệu vào cây nhị phân sinh viên như ở dưới, nhưng nó lại không thực hiện hàm insertTree trong main()

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// #include <string>

typedef struct infomation
	{
		char username[30];
		char password[30];
		float diem;
	} info;

typedef struct Node
	{
		info sv;
		struct Node *left;
		struct Node *right;
	} node ;

node *tree = NULL;

void insertTree(char name[30], char pass[30], float point, node *T) {

	if (T == NULL) {
		T = (node*)malloc(sizeof(node));
		T->sv.diem = point;
		strcpy(T->sv.username, name);
		strcpy(T->sv.password, pass);
		T->left = T->right = NULL;
	}
	else
		if (strcmp(T->sv.username, name) > 0) insertTree(name, pass, point, T->left);
	else
		if (strcmp(T->sv.username, name) < 0) insertTree(name, pass, point, T->right);
	else
		if (strcmp(T->sv.username, name) == 0)
		{
			printf("Tai khoan nay da ton tai. Vui long nhap tai khoan khac. \n");
			return;
		}
}

void Inds(node *T) {

	if (T == NULL) return;
	else
	{
		Inds(T->left);
		printf("%20s - %20s  - %8f \n", T->sv.username, T->sv.password, T->sv.diem);
		Inds(T->right);
	}
	printf("\n");
}

int main(int argc, char const *argv[])
{
	char name[30] = "hoanghedpsi";
	char pass[30] = "96pbc";
	float point = 9;
	insertTree(name, pass, point, tree);
	Inds(tree);
	return 0;
}

Giải thích giúp em với ạ.

void insertTree(char name[30], char pass[30], float point, node *&T) {

Thử sửa lại như trên xem thử.

Không được ạ. Nó báo lỗi

Mình copy code của bạn rồi sửa lại như trên thì cpp.sh không báo lỗi mà chạy bình thường.

http://cpp.sh/5jsyh

Em biên dịch trên linux, bằng gcc chứ không phải g++ ạ, hình như trong C không cho phép truyền kiểu này

Sửa lại 1 chút hàm insertTree

node * insertTree(char name[30], char pass[30], float point, node *T) {

    if (T == NULL) {
        T = (node*)malloc(sizeof(node));
        T->sv.diem = point;
        strcpy(T->sv.username, name);
        strcpy(T->sv.password, pass);
        T->left = T->right = NULL;
        return T;
    }
    else
        if (strcmp(T->sv.username, name) > 0){  T->left= insertTree(name, pass, point, T->left); return T;}
    else
        if (strcmp(T->sv.username, name) < 0) {  T->right= insertTree(name, pass, point,  T->right); return T;}
    else
        if (strcmp(T->sv.username, name) == 0)
        {
            printf("Tai khoan nay da ton tai. Vui long nhap tai khoan khac. \n");
            return T;
        }
}

Khi thêm 1 node vào thì sửa lại lệnh

tree=insertTree(name, pass, point, tree);
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?