Дано бинарное дерево категорий. Названия могут повторяться на разных уровнях. Верните,
сколько раз встречается каждое название.
type Node struct {
Title string
Left, Right *Node
}
// CountTitles возвращает число вхождений каждого названия в дереве.
func CountTitles(root *Node) map[string]int
Пример
Техника
├── L: Ноутбуки
│ └── L: Азиатские
│ ├── L: Ноутбуки
│ └── R: Яркие
└── R: Планшеты
├── L: Крупные
│ ├── L: Чёрные
│ └── R: Белые
└── R: Яркие
├── L: Синие
└── R: Тусклые
└── L: Техника
└── R: Техника
→ {"Техника": 3, "Ноутбуки": 2, "Яркие": 2, "Азиатские": 1, "Планшеты": 1,
"Крупные": 1, "Чёрные": 1, "Белые": 1, "Синие": 1, "Тусклые": 1}
Требования
- Пустое дерево (
nil) — пустая мапа.
- Дерево не изменять.
- До 10⁶ узлов; дерево может быть вырожденным (глубина до 10⁶). O(n) времени.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.