Add is_empty() and child_exists() methods.
Keep link to the parent for two-way traversal.

If it causes any problems with GC, replace with weakref.