Удаление узлов из двумерного бинарного дерева поиска

Мне было интересно, может ли кто-нибудь дать полезную информацию об удалении узлов из двумерного двоичного дерева поиска.

Насколько я понимаю, есть четыре дела, первое из которых я завершил:

  1. Удаление узла без дочерних элементов (листа) простое, просто установите указатель на этот узел равным нулю.
  2. Удаление узла с одним дочерним элементом на левом узле и правом узле равно нулю.
  3. Удаление узла с одним дочерним элементом на правом узле и левом узле равно нулю.
  4. Удаление узла с двумя дочерними элементами, слева и справа.

Я не уверен, как точно сделать 2,3 и 4. Я пытался сделать это итеративно, однако, похоже, это не работает. Я предполагаю, что это должно быть сделано рекурсивно. Может кто-нибудь, пожалуйста, пролить свет на то, как это будет сделано точно. Это в java, хотя это не имеет значения :)


person user1056912    schedule 28.02.2012    source источник
comment
Что это за двумерное бинарное дерево поиска? Это к-д дерево? Квадрант?   -  person templatetypedef    schedule 01.03.2012


Ответы (1)


В 2D-дереве все значения хранятся в листовых узлах. Внутренние узлы просто служат путями к обнаружению конечного узла. В частности, внутренние узлы определяют полуплоскости, в которых содержатся базовые данные. Мы имеем дело только с данными; мы не модифицируем структурные элементы самой структуры данных. Таким образом, справедлив только случай 1 выше. Все остальные не имеют значения.

person Aadith Ramia    schedule 16.01.2013