Может кто - нибудь , пожалуйста , объясните разницу между бинарным деревом и двоичным деревом поиска с примером ?
Разница между бинарным деревом и двоичным деревом поиска
Бинарное дерево: дерево, где каждый узел имеет до двух листьев
1
/ \
2 3
Бинарное дерево поиска: Используется для поиска . Бинарное дерево где левый ребенок содержит только узлы со значениями меньше , чем родительский узел, и где право ребенок только содержит узлы со значениями , превышающих или равных родителем.
2
/ \
1 3
Бинарное дерево состоит из узлов, где каждый узел содержит «левый» указатель, а «правильный» указатель, и элемент данных. «Корень» указатель указывает на самый верхний узел в дереве. Левые и правые указатели рекурсивно указывают на меньшие «поддеревьев» с обеих сторон. Пустой указатель представляет собой бинарное дерево без элементов - пустое дерево. Формальное рекурсивное определение является: бинарное дерево либо пусто (представлено нулевым указателем), либо состоит из одного узла, где левые и правые указатели (рекурсивное определение впереди) каждая точка бинарного дерева.
Двоичное дерево поиска (БСТ) или «заказал бинарное дерево» представляет собой тип бинарного дерева , где узлы расположены в следующем порядке: для каждого узла, все элементы в его левом поддереве меньше к узлу (<), и все элементы в правом поддереве больше , чем узел (>).
5
/ \
3 6
/ \ \
1 4 9
Дерево, показанное выше, бинарное дерево поиска - узел «корень» является 5, а его левый узлы поддерева (1, 3, 4) являются <5, а его правый узлы поддерева (6, 9)> 5. Рекурсивный, каждый из поддеревьев также должны подчиняться двоичного дерева поиска ограничение: в (1, 3, 4) поддереве, 3 является корнем, 1 <3 и 4> 3.
Следите за точную формулировку проблем - это «бинарное дерево поиска» отличается от «бинарного дерева».
Двоичное дерево поиска представляет собой особый вид двоичного дерева, которое обладает следующим свойством: для любого узла п, значение каждого потомка узла в левом поддереве п меньше, чем значение п, а значение каждого потомка узла в правом поддереве является больше, чем значение п.
Как все выше объяснил о разнице между бинарным деревом и двоичным деревом поиска, я просто добавить, как проверить, является ли данным бинарным дерево бинарного дерева поиска.
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);
}
Надеюсь, что это поможет. Извините, если я отвлечение от темы, как я чувствовал, что стоит отметить, это здесь.
Бинарное дерево является специализированной формой дерева с двумя ребенком (слева ребенка и правом ребенка). Это просто представление данных в структуре дерева
Двоичное дерево (BST) представляет собой особый тип бинарного деревакоторый следует следующему условию:
- левый дочерний узел меньше, чем его родительский узел
- правый дочерний узел больше, чем его родительский узел
Бинарное дерево, дерево, дети не более чем два. Двоичное дерево поиска следует инвариант, что левый ребенок должен иметь меньшее значение, чем ключ корневого узла, в то время как право ребенок должен иметь большее значение, чем ключ корневого узла.
Бинарное дерево поиска: при обходе Симметричным производятся на бинарном дереве, вы получите отсортированные значения вставленных элементов бинарного дерева: не отсортированный порядок не найден в любом виде обхода
Для того, чтобы проверить погоду или нет данного бинарного дерево Двоичного дерева здесь является альтернативным подходом.
Траверса дерева В заказовМой мода (т.е. Left ребенок -> Родитель -> Право ребенок), магазин , проходимое узел данные во временном переменном позволяют сказать , что темп , просто перед сохранением в темп , проверке данных текущей погоды в 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;
}
Поддерживать переменную временную вне
Бинарное дерево обозначает структуру данных , которая состоит из узлов , которые могут только иметь два ребенок ссылки.
Двоичное дерево ( БСТ ), с другой стороны, это специальная форма двоичного дерева структуры данных , где каждый узел имеет сравнимое значение, и меньше ценятся дети , прикрепленные к левому и более крупные оцененные дети присоединены к праву.
Таким образом, весь BST 's является Binary Tree , однако только некоторый Binary Tree ' может быть также с BST . Сообщите , что BST является подмножеством бинарного дерева .
Таким образом, Binary Tree является более общей структурой данных , чем бинарное дерево поиска . А также вы должны уведомить , что Двоичное дерево является отсортированным деревом , тогда нет такого набора правил для общего бинарного дерева .
Binary Tree
Binary TreeКоторый неBST ;
5
/ \
/ \
9 2
/ \ / \
15 17 19 21
Двоичное дерево (сортируется дерево)
Бинарное дерево поиска , который также Binary Tree ;
50
/ \
/ \
25 75
/ \ / \
20 30 70 80
Двоичное дерево узлов недвижимости
Также уведомить , что для любого родительского узла в BST ;
Все левые узлы имеют меньшее значение , чем значение родительского узла. В верхнем примере узлы со значениями {20, 25, 30} , которые все расположены на левой ( левые потомки ) 50, меньше , чем 50.
Все правые узлы имеют большее значение , чем значение родительского узла. В верхнем примере узлы со значениями {70, 75, 80} , которые все расположены на правом ( правые потомки ) 50, больше , чем 50.
Существует нет такого правила для Binary Tree Node. Единственное правило для Binary Tree Node оказывает двое детей , так что самостоятельно объясняет себя , что почему называется двоичным .
бинарное дерево
Бинарное дерево может быть что - нибудь , который имеет 2 ребенка и 1 родитель. Он может быть реализован в виде связанного списка или массива, или с помощью пользовательского API. После того, как вы начнете добавлять более конкретные правила в нее, она становится все более специализированным дерево . Наиболее распространенная известно реализацией является то, что добавление небольших узлов на левом и более крупном на правом.
Так , например, меченый бинарное дерево размером 9 и высотой 3, с корневого узла, значение которого равно 2. Дерево несбалансированным и не сортируются . https://en.wikipedia.org/wiki/Binary_tree
Так, например, в дереве на левой стороне, А имеет 6 детей {B, C, D, E, F, G}. Он может быть преобразован в бинарном дереве справа.
Двоичное
Двоичное является метод / алгоритм , который используется для поиска конкретного элемента на узле цепи. Двоичный поиск работает на отсортированных массивах .
Двоичный поиск сравнивает целевое значение до среднего элемента массива; если они не равны, то половина , в которой цель не может лежать устраняется , и поиск продолжается на оставшейся половине , пока он не будет успешным или оставшаяся половина пуста. https://en.wikipedia.org/wiki/Binary_search_algorithm
Дерево , представляющее двоичный поиск . Массив досматриваемого здесь [20, 30, 40, 50, 90, 100], а целевое значение составляет 40.
Бинарное дерево поиска
Это одна из реализаций двоичного дерева. Это специализируется на поиске .
Бинарное дерево поиска и B-дерево структура данных на основе двоичного поиска .
Бинарные деревья поиска (BST), которую иногда называют упорядоченные или упорядоченные бинарные деревья, представляют собой особый тип контейнера : структуры данных , которые хранят «пунктов» (например, числа, названия и т.д.) в памяти. https://en.wikipedia.org/wiki/Binary_search_tree
Двоичное дерево поиска размером 9 и глубиной 3, с 8 в корне. Листья не рисуются.
И, наконец, большая схема для сравнения производительности известных структур данных и алгоритмов применяется:
Изображение взято из алгоритмов (4 - е издание)
В бинарном дереве поиска, все узлы расположены в определенном порядке - узлы слева от корневого узла имеет меньшее значение, чем его корень, и все узлы справа от узла имеют значения больше, чем значение из корень.
Дерево можно назвать в виде двоичного дерева, если и только если максимальное число детей любого из узлов равно два.
Дерево можно назвать как бинарное дерево поиска, если и только если максимальное количество детей любого из узлов два и левый ребенок всегда меньше правого ребенка.



















