If each node in a tree contains exactly two references, the tree is called a binary tree. Because reference can be null, each node in a binary tree can have 0, 1, or 2 successor nodes. Example:
A
/
B
/ \
E C
\ / \
F G D
A binary tree is full if all of its leaves are on the same level, and all internal nodes have exactly two children. A full binary tree with height h has

nodes. A binary tree is complete if all the "holes" are on the right side of the deepest level.
A binary tree can also be stored in an array in the following way: first, put the root in index 0, then, for every node in index i, put its left child at

, and its right child at

. In this way, the above binary tree will be represented as
{A, B, _, E, C, _, _, _, F, G, D}
The "_" in the array is a special value indicating nonexistent values, or "holes". The holes of course will be "null". If the binary tree is complete, then there is no "hole" when it is stored in an array between nodes.
Does that give you any ideas?