Я запутался в терминологии приведенных ниже деревьев, я изучал Дерево, и я не могу различить эти деревья:
а) Полное двоичное дерево
б) Строгое двоичное дерево
в) Полное двоичное дерево
Пожалуйста, помогите мне различать эти деревья. Когда и где эти деревья используются в структуре данных?
data-structures
tree
binary-tree
kTiwari
источник
источник
Ответы:
Википедия уступила
Полное двоичное дерево (иногда правильное двоичное дерево или 2-дерево или строго двоичное дерево) - это дерево, в котором каждый узел, кроме листьев, имеет двух дочерних элементов.
Итак, у вас нет узлов с одним дочерним элементом. Похоже на строгое двоичное дерево.
Вот изображение полного / строгого двоичного дерева из Google:
Полное двоичное дерево - это двоичное дерево, в котором каждый уровень, кроме, возможно, последнего, полностью заполнен, а все узлы расположены как можно дальше слева.
Кажется, это сбалансированное дерево.
Вот изображение полного двоичного дерева из Google, полная древовидная часть изображения является бонусом.
источник
Идеальное дерево:
Полное дерево:
Строгое / полное дерево:
источник
Есть разница между СТРОГОМ и ПОЛНЫМ ДВОИЧНЫМ ДЕРЕВО.
1) ПОЛНОЕ ДВОИЧНОЕ ДЕРЕВО: двоичное дерево высоты h, которое содержит ровно (2 ^ h) -1 элементов, называется полным двоичным деревом . (Ссылка: стр. 427, Структуры данных, алгоритмы и приложения в C ++. [University Press], второе издание Сартаджа Сахни).
или другими словами
В ПОЛНОМ ДВОИЧНОМ ДЕРЕВЕ каждый узел имеет ровно 0 или 2 дочерних узла, и все конечные узлы находятся на одном уровне.
Например: Ниже приведено ПОЛНОЕ ДВОИЧНОЕ ДЕРЕВО:
2) СТРОГО ДВОИЧНОЕ ДЕРЕВО: каждый узел имеет ровно 0 или 2 дочерних элемента.
Например: Следующее - СТРОГО ДВОИЧНОЕ ДЕРЕВО:
Я думаю, что нет путаницы в определении полного двоичного дерева, тем не менее, для полноты сообщения я хотел бы рассказать, что такое полное двоичное дерево.
3) ПОЛНОЕ ДВОИЧНОЕ ДЕРЕВО: Двоичное дерево является полным бинарным деревом, если все уровни полностью заполнены, кроме, возможно, последнего уровня, и на последнем уровне есть все ключи, насколько это возможно.
Например: Ниже приводится ПОЛНОЕ ДВОИЧНОЕ ДЕРЕВО:
Примечание . Следующее также является полным двоичным деревом:
источник
Отказ от ответственности . Основным источником некоторых определений является Википедия, любые предложения по улучшению моего ответа приветствуются.
Хотя у этого сообщения есть принятый ответ и он хороший, я все еще был в замешательстве и хотел бы добавить еще несколько разъяснений относительно разницы между этими терминами.
(1) ПОЛНОЕ ДВОИЧНОЕ ДЕРЕВО . Полное двоичное дерево - это двоичное дерево, в котором каждый узел, кроме листьев, имеет двух дочерних элементов. Это также называется строго двоичным деревом .
Вышеупомянутые два являются примерами полного или строго двоичного дерева.
(2) ПОЛНОЕ ДВОИЧНОЕ ДЕРЕВО - Теперь определение полного двоичного дерева довольно неоднозначно, в нем говорится: - Полное двоичное дерево - это двоичное дерево, в котором каждый уровень, кроме, возможно, последнего , полностью заполнен, и все узлы как как можно дальше слева. Он может иметь от 1 до 2h узлов, насколько это возможно, на последнем уровне h
Обратите внимание на линии, выделенные курсивом.
Неопределенность заключается в строках, выделенных курсивом, «кроме, возможно, последнего», что означает, что последний уровень также может быть полностью заполнен, т.е. это исключение не всегда должно выполняться. Если исключение не выполняется, то оно точно такое же, как и второе изображение, которое я опубликовал, которое также можно назвать идеальным двоичным деревом . Итак, идеальное двоичное дерево также является полным и завершенным, но не наоборот, что станет ясно еще одним определением, которое мне нужно указать:
ПОЧТИ ПОЛНОЕ ДВОИЧНОЕ ДЕРЕВО. Когда сохраняется исключение в определении полного двоичного дерева, оно называется почти полным двоичным деревом или почти полным двоичным деревом. Это просто тип полного двоичного дерева, но необходимо отдельное определение, чтобы сделать его более однозначным.
Таким образом, почти полное двоичное дерево будет выглядеть так, вы можете видеть на изображении, что узлы расположены как можно дальше слева, поэтому это больше похоже на подмножество полного двоичного дерева, говоря более строго, каждое почти полное двоичное дерево является полным двоичным дерево, но не наоборот. :
источник
Исходя из приведенных выше ответов, вот точная разница между полными / строго, полными и идеальными двоичными деревьями
Полное / строго двоичное дерево : - Каждый узел, кроме конечных, имеет двух дочерних узлов.
Полное двоичное дерево : - Каждый уровень, кроме последнего, полностью заполнен, и все узлы выровнены по левому краю.
Идеальное двоичное дерево : - Каждый узел, кроме конечных, имеет двух дочерних узлов, и каждый уровень (последний уровень тоже) полностью заполнен.
источник
Рассмотрим двоичное дерево, узлы которого нарисованы в виде дерева. Теперь начните нумерацию узлов сверху вниз и слева направо. Полное дерево имеет следующие свойства:
Если у n есть дети, то все узлы с номерами меньше n имеют двух детей.
Если у n есть один дочерний элемент, это должен быть левый дочерний элемент, и все узлы меньше n имеют двух дочерних элементов. Кроме того, ни один узел с номером больше n не имеет дочерних узлов.
Если n не имеет дочерних узлов, то ни один узел с номерами больше n не имеет дочерних узлов.
Полное двоичное дерево может использоваться для представления кучи. Его можно легко представить в непрерывной памяти без пропусков (т. Е. Используются все элементы массива, за исключением любого места, которое может существовать в конце).
источник
Полное двоичное дерево - это полное двоичное дерево, но обратное невозможно, и если глубина двоичного файла равна n, то нет. узлов в полном двоичном дереве составляет (2 ^ n-1). В двоичном дереве не обязательно, чтобы у него было два дочерних элемента, но в полном двоичном дереве каждый узел не имеет или двух дочерних элементов.
источник
Чтобы начать с основ, очень важно понимать само двоичное дерево, чтобы понимать его различные типы.
Дерево является двоичным деревом тогда и только тогда, когда:
- У него есть корневой узел, который не может иметь дочерних узлов (0 дочерних узлов, NULL дерево)
–Корневой узел может иметь 1 или 2 дочерних узла. Каждый такой узел сам образует двоичное дерево
–Количество дочерних узлов может быть 0, 1, 2 ....... не более 2
–Существует уникальный путь от корня до всех остальных узлов.
Пример :
Переходя к запрашиваемой вами терминологии:
Двоичное дерево является полным двоичным деревом (высоты h, мы принимаем корневой узел как 0) тогда и только тогда, когда:
Уровни от 0 до h-1 представляют полное двоичное дерево высоты h-1.
- Один или несколько узлов на уровне h-1 могут иметь 0 или 1 дочерний узел
Если j, k являются узлами на уровне h-1, тогда j имеет больше дочерних узлов, чем k тогда и только тогда, когда j находится слева от k, то есть на последнем уровне (h) могут отсутствовать конечные узлы, однако присутствующие должны быть сдвинутым влево
Пример :
Двоичное дерево является строго двоичным деревом тогда и только тогда, когда:
Каждый узел имеет ровно два дочерних узла или ни одного узла
Пример :
Двоичное дерево является полным двоичным деревом тогда и только тогда, когда:
Каждый нелистовой узел имеет ровно два дочерних узла
Все листовые узлы находятся на одном уровне
Пример :
Вы также должны знать, что такое идеальное двоичное дерево?
Бинарное дерево является идеальным двоичным деревом тогда и только тогда, когда:
- полное двоичное дерево
- Все листовые узлы находятся на одном уровне
Пример :
Что ж, извините, я не могу публиковать изображения, так как у меня нет 10 репутации. Надеюсь, это поможет вам и другим!
источник
В моем ограниченном опыте работы с двоичным деревом я думаю:
источник
Рассмотрим двоичное дерево высоты h. Двоичное дерево называется полным двоичным деревом, если все листья находятся на высоте «h» или «h-1» без каких-либо пропущенных чисел в последовательности.
Это полное двоичное дерево.
Это не полное двоичное дерево, так как узел числа 5 отсутствует в последовательности
источник
полное двоичное дерево является полным, если каждый узел имеет 0 или 2 дочерних элемента. в полном двоичном формате количество листовых узлов равно количеству внутренних узлов плюс 1 L = l + 1
источник
Полное двоичное дерево: все уровни полностью заполнены, кроме самого нижнего уровня, и главное, что все листовые элементы должны быть дочерними. Строгое двоичное дерево: в этом дереве каждый нелистовой узел не имеет дочернего элемента, т.е. ни левого, ни правого. Полное двоичное дерево: каждый узел имеет либо нулевой дочерний элемент, либо два дочерних элемента (никогда не имеет одного дочернего элемента).
источник