Each separate Node stores 3 things:
1. Some data. In this case the ID. (It could be all sorts of things - name and address and bank balance - ie not necessarily just a single integer.)
2. The location/pathway/connection to another related Node to the left of it via the left pointer, Node* left
3. - ditto - Node to the right ... right pointer, Node* right.
left and right pointers are initialized as nullptr until needed.
When you want to store a new piece of information in your tree, you create a new node and decide if it goes on the left or the right. for example, if ID is less than the root node, it would go on the left, if ID is greater than the root node, it would go on the right.
BTW, you have a type mismatch between your data item and your constructor. ID is an int, while your constructor argument is a char.
The nextPointer here is used to point to next item in the linked list not for its memory address!!
A pointer contains a memory address. In the case of nextPointer it contains the address of the next node (or null if at end of list), Linked lists aren't typically ordered, although they can be.
left and right are the same. They contain the address of the next node on one side of the tree (or null). A binary tree is typically used to create an ordered list. i.e. lower values go to the left, higher values go the right.