Назначение узла в двоичном дереве - сохранить данные и указать на его два дочерних узла.
В вашей реализации вместо , указывающего для дочерних узлов у вас есть сохраненные дочерние узлы в родительском узле. В общем, узел root содержит все. Но данные реплицируются экспоненциально вниз по дереву.
Это приведет к серьезной нехватке памяти.