355
правок
Изменения
→Удаление
| [[Файл:Bst_del3.png|900px]]
|}
'''delete'''(Node root, Node z) //корень дереваподдерева, удаляемый элемент Node x, y //x - элемент, который нужно поместить вместо y '''if''' z.left =!= null '''orand''' z.right !=null //если z имеет двух детей y = null '''next'''(z) //y - удаляемый элемент, если тот имеет не более одного ребенкаследующий за удаляемым, x - null x = null '''if''' y == y.parent.left y .parent.left = z null '''else''' y.parent.right = null z.key = y.key //иначе - следующий за нимподвешиваем y вместо z z.data = y .data '''else if''' z.left != null '''nextor'''(z) .right != null //eсли z имеет одного ребенка y = z //y - удаляемый элемент '''if''' y.left != null //x - ребенок y x = y.left '''else''' x = y.right '''else''' //если z не имеет детей y = z //y - удаляемый элемент, x - null x = null '''if''' x != null //подвешиваем x вместо y
x.parent = y.parent
'''if''' y.parent == null
'''else'''
y.parent.right = x
== Ссылки ==