Работая над одним проектом, я столкнулся с необходимостью хранить подразделения компании в виде древовидной структуры. Реализовал я это так: