Не знаю, как сформулировать этот вопрос. В основном принимает следующий BST:Процедура удаления дерева двоичного поиска с детьми
25
/ \
20 30
/\ /\
18 23 27 31
/\ /\
8 19 22 24
Если бы я удалить значение 25 и вращать значение 20 в своем месте, он делает больше смысла для добавления 23 поддерева до 27, или для добавления 30 поддерева к 24. И я не имею в виду конкретное дело, но с более широкой точки зрения.
Просто чтобы быть ясно, что предпочтительнее между этими двумя аранжировок:
20
/ \
18 23
/\ /\
8 19 22 24
\
30
/\
27 31
20
/ \
18 30
/\ /\
8 19 27 31
/
23
/\
22 24
Это делает смысл более понятным и проще реализовать, спасибо! –
Имеет ли эта логика смысл: 1. Получить максимальное значение в левом поддереве (изначально корень левого поддерева) вместе с максимальным значением родительского узла (изначально корень текущего поддерева) 2. Если конечная родительский узел НЕ совпадает с исходным узлом, установите правильное поддерево этого родительского узла в левое поддерево узла с максимальным значением в исходном узле левого поддерева. 3. Дублируйте значение и частоту/возникновение узла с максимальным значением в левом поддереве исходного узла в исходный узел. –