Я бы сохранил всю эту информацию в
HashMap<Variable dependent,List<Variable dependee>>
Первый уровень на карте вернет все, от чего вы напрямую зависите.Рекурсивный вызов таблицы с переменными результатов, от которых вы напрямую зависите, даст вам косвенные отношения.При обходе дерева следите за циклами.