Преемником элемента в BST является преемник элемента в порядке сортировки, определяемом неупорядоченным обходом. Поиск преемника, когда каждый узел имеет указатель на его родительский узел, представлен в учебнике по алгоритмам CLRS (Introduction to Algorithms by MIT Press).
Идея найти преемника здесь такова: если правое поддерево узла x
не пусто, преемник x
является минимальным элементом в правом поддереве. В противном случае преемник является младшим предком x
, чей левый потомок также является предком x
(при условии, что узел является предком самого себя).
Можем ли мы найти преемника, не используя указатель на родительский узел?
Иногда наш узел дерева не имеет этого указателя. Я боролся пару часов, но не могу написать правильный код.