> Как написать структуру или класс для бинарного дерева поиска (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Яндекс
Стек: iOS, Swift
> Пример ответа
Для реализации бинарного дерева поиска (BST) в Swift можно использовать класс с опциональными ссылками на левый и правый дочерние узлы. Вот пример:
SWIFTclass BinarySearchTree<T: Comparable> {var value: Tvar left: BinarySearchTree?var right: BinarySearchTree?init(value: T) {self.value = value}func insert(_ newValue: T) {if newValue < value {if let leftNode = left {leftNode.insert(newValue)} else {left = BinarySearchTree(value: newValue)}} else if newValue > value {if let rightNode = right {rightNode.insert(newValue)} else {right = BinarySearchTree(value: newValue)}}// Значения, равные текущему, игнорируются (можно настроить)}func contains(_ target: T) -> Bool {if target == value {return true} else if target < value {return left?.contains(target) ?? false} else {return right?.contains(target) ?? false}}}
Этот класс использует дженерики для поддержки любого типа, соответствующего протоколу Comparable. Метод insert рекурсивно добавляет элемент, соблюдая правило BST: меньшие значения - слева, большие - справа. Метод contains проверяет наличие элемента. Для iOS-разработки такая структура удобна, так как Swift обеспечивает безопасность типов и ARC для управления памятью.
> Похожие задачи по mobile
Как сделать так, чтобы функция имела доступ к оригинальной структуре без копирования
Всегда ли структуры хранятся в стеке
Как сделать потокобезопасным общий массив при синхронных операциях в concurrent очереди
Что такое сайд таблица (side table) в контексте weak ссылок и как она работает
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью