Hello!
I'd like to work with you again and help you on this!
This project sounds like a true challenge and is therefore quite interesting to me :-)
Within 3 days I will deliver this as an optimized B-tree that is ligtning-fast in adding emails (due to the structure), verifying if email exists and does NOT store redundant data. I will achieve this by only storing new characters, eg those that are in addition to the leaf above. I don't quite fully know how exactly I'll implement this (yet) so that it is optimal but I understand this is your general requirement, eg to minimise the amount of memory used.
I'll implement the non-visual class that can:
1.) save list of emails in text file, one address per line
2.) load itself from the same file format
3.) check for existence of email
4.) add new email and if already exists, return false
Please note that loading, saving, verifying existence and adding new address can be expected to be considerably slower than as working with optimized structures - these will be optimized, but for memory-efficiency and not speed. Due to the high number of comparisons I expect will be required, maintaining the tree will cause higher CPU load next to lower RAM consumption.
Additionally, I will be available later on for future developments as you may require.
I look forward to working with you again!
thanks & regards,
Janos