Бинарное дерево поиска
Содержание
Бинарное дерево поиска
Бинарное дерево поиска поддерживает три операции:
- вставка элемента
- удаление элемента
- поиск элемента
Поиск элемента
У нас есть: дерево T и значние K
Задача: Найти, представлен ли элемент K в дереве T – вернуть узел с этим элементом
Алгоритм
- Проверить , если дерево
Tпустое – вернуть что не найден элемент - Проверить что текущий узел
XравенK:- Если
X==K– вернуть узел - Если
X>K– запустить алгоритм рекурсивно от правого поддерева - Если
X<K– запустить алгоритм рекурсивно от левого поддерева
- Если
Имплементация
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func searchBST(root *TreeNode, val int) *TreeNode {
if root == nil {
return nil
}
if root.Val == val {
return root
}
if root.Val > val {
return searchBST(root.Left, val)
}
return searchBST(root.Right, val)
}