A uint8 takes 1 byte of ram as opposed to 4 bytes (i386) or 8 bytes (x86_64) for a pointer (even if what it its pointing to takes 0 bytes of memory.  Save 3-7 bytes per tree node.