It looks as though your btreenode.h file is being included (directly or indirectly) multiple times... that's why the "previous declaration" and the "conflicting types" are in the same file at the same line (previous declaration on the first include, conflicting types when it runs into the same line on the next include).
You should use header guards (in btreenode.h) to prevent the header file code from being processed if it's already been included. At the top of the file, add:
#ifndef BTREENODE_H
#define BTREENODE_H
and at the end of the file add:
#endif // BTREENODE_H
That way, whatever is between those will only be compiled if BTREENODE_H was not already #define
d from a previous inclusion.