Действительно ли пустые Деревья двоичного поиска допустимы?

Как уже указывалось, Lua использует ключевое слово not для логической инверсии, а не оператор !. Выложенный вами код выглядит как gLua: вариант Lua, основанный на Lua 5.1 и разработанный для Garry's Mod. Среди отличий от чистого Lua 5.1 он реализует множество операторов в стиле C, как указано здесь здесь . Попытка запустить gLua в обычной среде Lua не будет работать, так как базовая Lua не поддерживает эти операторы, а некоторые встроенные функции Lua ведут себя по-разному в gLua.

РЕДАКТИРОВАТЬ: Если выполняется в среде gLua, причиной проблемы, вероятно, является использование entity.GetrHealth: это не базовая функция, вы намеревались entity.GetHealth?

5
задан John Topley 1 May 2009 в 10:28
поделиться

5 ответов

Да и да.

8
ответ дан 18 December 2019 в 13:19
поделиться

Точное значение пустого дерева, конечно же, зависит от вашей реализации, равно как и значение слова «действительный», но в целом я бы сказал «да» на оба вопроса. Пустое дерево представляет случай, когда набор сущностей, в который вы вставили, пуст, а единственный узел - случай, когда набор содержит одну сущность.

2
ответ дан 18 December 2019 в 13:19
поделиться

Один узел без дочерних элементов, безусловно, действителен и согласно Структура двоичного дерева :

(изменяемое) двоичное дерево, BiTree, может быть в пустом состоянии или не пустым состояние:

  • Когда оно пустое, оно не содержит данных.
  • Когда он не пустой, он содержит объект данных, называемый корневым элементом, и 2 различных объекта BiTree, называемых левым поддеревом и правым поддеревом.

Для полноты, эта запись в Википедии является довольно полезное краткое изложение терминологии и тому подобное.

2
ответ дан 18 December 2019 в 13:19
поделиться

Допустимо ли пустое дерево (нулевое)?

Если его пусто, дерева нет. Следовательно, вопрос о действительности не возникает.

Является ли действительным корневой узел без дочерних элементов?

Да. Это тройник с одним элементом.

1
ответ дан 18 December 2019 в 13:19
поделиться

Я думаю, что вы смешиваете яблоки и апельсины:

  1. null - это значение в некоторых языках программирования, и оно связано с конкретным представлением вашей реализации структуры данных
  2. «Пусто» - это свойство абстрактной структуры данных, которую мы называем «бинарное дерево поиска»

Теперь дерево - это упорядоченный набор: ни больше, ни меньше. Конечно, набор может быть пустым! Это означает, что в вашей реализации что-то похожее на:

MyTree tree = null

представляет пустое дерево? Ну, это зависит от вашей модели. Например, вы можете подумать, что пустое поддерево должно быть представлено узлом без значения и с аннулированными ссылками на листья: в этой модели нулевой указатель не имеет смысла с логической точки зрения. Но это только один подход! Подход, основанный на дозорных, - это удовольствие для программирования, но он требует большого объема памяти: тогда вы можете моделировать пустые узлы только с нулем. В этом случае указатель null может быть пустым деревом.

1
ответ дан 18 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: