Есть массив из хэшей, которые описывают дерево, каждый элемент массива имеет свой
id
и
id
родителя:
arr = [
{id: 23, title: 'aaa', parent_id: nil},
{id: 24, title: 'aab', parent_id: 23},
{id: 25, title: 'aac', parent_id: 23},
{id: 26, title: 'aad', parent_id: 25},
{id: 27, title: 'aae', parent_id: 25},
{id: 28, title: 'aaf', parent_id: 27},
{id: 29, title: 'aag', parent_id: 27},
{id: 30, title: 'aah', parent_id: 24},
{id: 31, title: 'aaz', parent_id: 24},
]
Как написать метод, который на вход получит какой-нибудь элемент массива, а на выход вернет всех его потомков? Пример, я хочу получить всех потомков вот этого элемента:
{id: 24, parent_id: 23
}. Метод должен вернуть
[
{id: 30, title: 'aah', parent_id: 24},
{id: 31, title: 'aaz', parent_id: 24},
]
Или, к примеру, хочу получить потомков вот этого элемента:
{id: 25, parent_id: 23}
. Метод должен вернуть
[
{id: 26, title: 'aad', parent_id: 25},
{id: 27, title: 'aae', parent_id: 25},
{id: 28, title: 'aaf', parent_id: 27},
{id: 29, title: 'aag', parent_id: 27}
]