Ho iniziato lavorare con gli alberi in C. Ho affrontato diversi esercizi su altri argomenti (array, matrici, liste collegate con puntatori e varie operazioni su questi costrutti). Sono comunque nuovo alla programmazione e ho studiato solo argomenti di base, introduttivi insomma.
La parte finale del corso trattava gli alberi, essendo stati trattati per solo una lezione e in via molto teorica, una volta arrivato alla compilazione vera e propria mi sono trovato molto in difficolt�.
Ho provato a risolvere un esercizio trovato su compiti di diversi anni fa per vedere di approfondire questo aspetto.

Testo
costruire un albero binario, contarne i numeri pari e stampare i nodi con solo il figlio destro.

Ho provato intanto a costruire l'albero, basandomi sulle poche informazioni del mio libro, dei miei appunti e qualche esempio presente sulle slide del corso

Il compilatore (utilizzo visual studio) mi da i seguenti errori: errore strumenti del linker LNK2019 e LNK11206 esterni non risolti.

Questo � il codice non funzionante che ho provato a mettere insieme e che dopo molti tentativi continua a non funzionare

codice:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include<stdio.h>
#include<malloc.h>


typedef unsigned short int Boolean; //definizioni per l'uso di booleani
#define TRUE 1
#define FALSE 0
//struttura albero
struct btree {
	float value;
	struct btree * left_ptr;
	struct btree * right_ptr;
};
//dichiarazioni funzioni gestione albero binario
void init(struct btree ** ptrptr);
void insert_inorder(struct btree ** ptrptr, float value);
void visit_r(struct btree * ptr);
Boolean search(struct btree * ptr, float target);
//funzioni interazione console
void getvalue(float *value_ptr);
void notify_selection_failure(char selection);


main() {
	struct btree *bintree;
	int size, res_search = FALSE, res_canc = FALSE;
	size = 5;
	float value, deleted_value;
	char selection[10];
	init(&bintree);
	printf("Digita uno dei seguenti caratteri per operazioni su albero:\n");
	printf("-a per fare un inserimento (ordinato)\n");
	printf("-b per fare una visita\n");
	printf("-c per fare una ricerca\n");
	printf("-x per uscire dal programma\n");
	Boolean exit_required = FALSE;
	int inserimento = 0;


	//struct btree *bintree;
	do {
		printf("\nChe operazione vuoi fare? ");
		scanf("%s", selection);
		switch (selection[0]) {
		case 'a'://inserimento
			getvalue(&value);
			insert_inorder(&bintree, value);
			break;
		case 'b'://vista simmetrica
			visit_r(bintree);
			break;
		case 'c'://ricerca
			getvalue(&value);
			res_search = search(bintree, value);
			if (res_search == TRUE)
				printf("Trovato!");
			else
				printf("Niente, riprova!");
			break;
		case 'x': //uscita
			exit_required = TRUE;
			break;
		default:
			notify_selection_failure(selection[0]);
		}
	} while (exit_required == FALSE);
}