Разница между двоичным деревом и деревом двоичного поиска

Может кто-нибудь объяснить разницу между бинарным деревом и деревом двоичного поиска с примером?

Ответ 1

Двоичное дерево: Дерево, где каждый node имеет до двух листов

  1
 / \
2   3

Двоичное дерево поиска: используется для поиска . Бинарное дерево, в котором левый дочерний элемент содержит только узлы со значениями, меньшими родительского node, и где правый ребенок содержит только узлы со значениями, большими или равными родительскому.

  2
 / \
1   3

Ответ 2

Двоичное дерево - это специализированная форма дерева с двумя дочерними (слева и справа). Это просто представление данных в структуре дерева

Дерево двоичного поиска (BST) - это особый тип двоичного дерева, который следует за следующим условием:

  • левый дочерний элемент node меньше родительского Node
  • правый дочерний элемент node больше родительского Node

Ответ 3

Двоичное дерево состоит из узлов, где каждый node содержит "левый" указатель, "правый" указатель и элемент данных. Указатель "root" указывает на самый верхний node в дереве. Левый и правый указатели рекурсивно указывают на меньшие "поддеревья" с обеих сторон. Нулевой указатель представляет собой двоичное дерево без элементов - пустое дерево. Формальное рекурсивное определение: двоичное дерево либо пусто (представлено нулевым указателем), либо состоит из одного node, где левый и правый указатели (рекурсивное определение впереди) каждый указывает на двоичное дерево.

Дерево двоичного поиска (BST) или "упорядоченное двоичное дерево" - это тип двоичного дерева, в котором узлы упорядочены по порядку: для каждого node все элементы в его левом поддереве меньше на node (<), и все элементы в его правом поддереве больше, чем node ( > ).

    5
   / \
  3   6 
 / \   \
1   4   9    

Дерево, показанное выше, представляет собой двоичное дерево поиска - "корень" node - это 5, а его левые узлы поддерева (1, 3, 4) 5, а его правые узлы поддерева (6, 9) → 5. Рекурсивно, каждое из поддеревьев должно также подчиняться ограничению двоичного дерева поиска: в поддереве (1, 3, 4) 3 является корнем, 1 < 3 и 4 > 3.

Следите за точной формулировкой проблем: "дерево двоичного поиска" отличается от "двоичного дерева".

Ответ 4

Как все выше объяснили разницу между двоичным деревом и деревом двоичного поиска, я просто добавляю, как проверить, является ли данное двоичное дерево двоичным деревом поиска.

boolean b = new Sample().isBinarySearchTree(n1, Integer.MIN_VALUE, Integer.MAX_VALUE);
.......
.......
.......
public boolean isBinarySearchTree(TreeNode node, int min, int max)
{

    if(node == null)
    {
        return true;
    }

    boolean left = isBinarySearchTree(node.getLeft(), min, node.getValue());
    boolean right = isBinarySearchTree(node.getRight(), node.getValue(), max);

    return left && right && (node.getValue()<max) && (node.getValue()>=min);

}

Надеюсь, это поможет вам. Извините, если я отклоняюсь от темы, поскольку я чувствовал, что стоит упомянуть об этом здесь.

Ответ 5

Двоичное дерево поиска является особым видом двоичного дерева, которое обладает следующим свойством: для любого node n каждое значение потомка node в левом поддереве n меньше значения n, а каждый потомок node Значение в правом поддереве больше, чем значение n.

Ответ 6

Двоичное дерево обозначает структуру данных, состоящую из узлов, которая может только иметь двух детей.

Дерево двоичного поиска (BST), с другой стороны, является специальной формой структуры данных Binary Tree, где каждая w630 > имеет сопоставимое значение, а дети с более низким значением привязаны к левым и более крупным детям, прикрепленным справа.

Таким образом, все BST являются двоичным деревом, но только некоторые Binary Tree могут быть также BST. Сообщать, что BST является подмножеством Двоичного дерева.

Итак, Двоичное дерево больше относится к общей структуре данных, чем Дерево двоичного поиска. А также вы должны уведомить, что Дерево двоичного поиска - это отсортированное дерево, тогда как такой набор правил для общего Двоичного дерева не существует.. p >

Двоичное дерево

A Binary Tree, который не a BST;

         5
       /   \
      /     \
     9       2
    / \     / \
  15   17  19  21

Дерево двоичного поиска (отсортированное дерево)

A Дерево двоичного поиска, которое также является Двоичным деревом;

         50
       /    \
      /      \
     25      75
    /  \    /  \
  20    30 70   80

Дерево двоичного поиска Node свойство

Также сообщите, что для любого родителя node в BST;

  • Все левые узлы имеют меньшее значение, чем значение родительского node. В верхнем примере узлы со значениями {20, 25, 30}, которые все расположены слева (левые потомки) 50, меньше 50.

  • Все правильные узлы имеют большее значение, чем значение родительского node. В верхнем примере узлы со значениями {70, 75, 80}, которые все расположены справа (правые потомки) 50, больше 50.

Нет такого правила для Двоичного дерева node. Единственное правило для Binary Tree Node состоит в том, чтобы иметь два дочерних элемента, поэтому он сам объясняет сам, почему он вызвал двоичный файл.

Ответ 7

Бинарное дерево

Двоичное дерево может быть любым, у которого есть 2 дочерних и 1 родительский. Он может быть реализован в виде связанного списка или массива или с вашим пользовательским API. Как только вы начинаете добавлять в него более конкретные правила, оно становится более специализированным деревом. Наиболее распространенная известная реализация состоит в том, что добавьте меньшие узлы слева и более крупные справа.

Например, помеченное двоичное дерево размером 9 и высотой 3 с корневым узлом, значение которого равно 2. Дерево не сбалансировано и не отсортировано. https://en.wikipedia.org/wiki/Binary_tree

enter image description here

Например, в дереве слева у A есть 6 дочерних элементов {B, C, D, E, F, G}. Его можно преобразовать в двоичное дерево справа.

enter image description here

Бинарный поиск

Бинарный поиск - это метод/алгоритм, который используется для поиска определенного элемента в цепочке узлов. Двоичный поиск работает на отсортированных массивах.

Бинарный поиск сравнивает целевое значение со средним элементом массива; если они неравны, то половина, в которой цель не может находиться, удаляется, и поиск продолжается на оставшейся половине, пока она не будет успешной или оставшаяся половина не станет пустой. https://en.wikipedia.org/wiki/Binary_search_algorithm

enter image description here

Дерево, представляющее бинарный поиск. Здесь ищется массив [20, 30, 40, 50, 90, 100], а целевое значение - 40.

enter image description here

Двоичное дерево поиска

Это одна из реализаций двоичного дерева. Это специализировано для поиска.

Двоичное дерево поиска и структуры данных B-дерева основаны на двоичном поиске.

Двоичные поисковые деревья (BST), иногда называемые упорядоченными или отсортированными двоичными деревьями, представляют собой особый тип контейнера: структуры данных, которые хранят "элементы" (такие как числа, имена и т.д.) В памяти. https://en.wikipedia.org/wiki/Binary_search_tree

Двоичное дерево поиска размером 9 и глубиной 3, с 8 в корне. Листья не нарисованы.

enter image description here

И, наконец, отличная схема для сравнения производительности известных структур данных и применяемых алгоритмов:

enter image description here

Изображение взято из алгоритмов (4-е издание)

Ответ 8

Бинарное дерево - это дерево, чьи дети никогда не превышают двух. Бинарное дерево поиска следует инварианту того, что левый потомок должен иметь меньшее значение, чем ключ корневого узла, в то время как правый потомок должен иметь большее значение, чем ключ корневого узла.

Ответ 9

  • Бинарное дерево поиска: когда выполняется обход по порядку в двоичном дереве, вы получаете отсортированные значения вставленных элементов
  • Двоичное дерево: в любом виде обхода не найдено отсортированного заказа

Ответ 10

Чтобы проверить, не является ли данное двоичное дерево двоичным деревом поиска, это альтернативный подход.

Дерево трассировки в Inorder Fashion (т.е. левый ребенок → родительский → правый ребенок), Store Traversed Node Данные во временной переменной позволяют сказать temp, прежде чем хранить в temp. Проверить текущие текущие данные Node выше предыдущего или нет. Затем просто перерыв, дерево не является деревом двоичного поиска, иначе пройдем до конца.

Ниже приведен пример с Java:

public static boolean isBinarySearchTree(Tree root)
{
    if(root==null)
        return false;

    isBinarySearchTree(root.left);
    if(tree.data<temp)
        return false;
    else
        temp=tree.data;
    isBinarySearchTree(root.right);
    return true;
}

Сохранять временную переменную снаружи

Ответ 11

В бинарном дереве поиска все узлы расположены в определенном порядке - узлы слева от корневого узла имеют меньшее значение, чем его корень, а все узлы справа от узла имеют значения, превышающие значение корень.

Ответ 12

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

Дерево можно назвать бинарным деревом поиска тогда и только тогда, когда максимальное число дочерних элементов любого из узлов равно двум, а левый дочерний элемент всегда меньше правого дочернего элемента.