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

голоса
282

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

Задан 17/06/2011 в 01:42
источник пользователем
На других языках...                            


12 ответов

голоса
498

Бинарное дерево: дерево, где каждый узел имеет до двух листьев

  1
 / \
2   3

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

  2
 / \
1   3
Ответил 17/06/2011 в 01:55
источник пользователем

голоса
30

Бинарное дерево состоит из узлов, где каждый узел содержит «левый» указатель, а «правильный» указатель, и элемент данных. «Корень» указатель указывает на самый верхний узел в дереве. Левые и правые указатели рекурсивно указывают на меньшие «поддеревьев» с обеих сторон. Пустой указатель представляет собой бинарное дерево без элементов - пустое дерево. Формальное рекурсивное определение является: бинарное дерево либо пусто (представлено нулевым указателем), либо состоит из одного узла, где левые и правые указатели (рекурсивное определение впереди) каждая точка бинарного дерева.

Двоичное дерево поиска (БСТ) или «заказал бинарное дерево» представляет собой тип бинарного дерева , где узлы расположены в следующем порядке: для каждого узла, все элементы в его левом поддереве меньше к узлу (<), и все элементы в правом поддереве больше , чем узел (>).

    5
   / \
  3   6 
 / \   \
1   4   9    

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

Следите за точную формулировку проблем - это «бинарное дерево поиска» отличается от «бинарного дерева».

Ответил 05/07/2012 в 16:32
источник пользователем

голоса
9

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

Ответил 27/02/2013 в 14:20
источник пользователем

голоса
12

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

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);

}

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

Ответил 28/02/2013 в 07:18
источник пользователем

голоса
51

Бинарное дерево является специализированной формой дерева с двумя ребенком (слева ребенка и правом ребенка). Это просто представление данных в структуре дерева

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

  1. левый дочерний узел меньше, чем его родительский узел
  2. правый дочерний узел больше, чем его родительский узел
Ответил 01/04/2013 в 14:19
источник пользователем

голоса
3

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

Ответил 06/06/2013 в 06:21
источник пользователем

голоса
3

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

Ответил 19/02/2014 в 02:18
источник пользователем

голоса
1

Для того, чтобы проверить погоду или нет данного бинарного дерево Двоичного дерева здесь является альтернативным подходом.

Траверса дерева В заказовМой мода (т.е. 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;
}

Поддерживать переменную временную вне

Ответил 04/01/2015 в 17:59
источник пользователем

голоса
9

Бинарное дерево обозначает структуру данных , которая состоит из узлов , которые могут только иметь два ребенок ссылки.

Двоичное дерево ( БСТ ), с другой стороны, это специальная форма двоичного дерева структуры данных , где каждый узел имеет сравнимое значение, и меньше ценятся дети , прикрепленные к левому и более крупные оцененные дети присоединены к праву.

Таким образом, весь 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 оказывает двое детей , так что самостоятельно объясняет себя , что почему называется двоичным .

Ответил 18/03/2016 в 17:41
источник пользователем

голоса
4

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

Бинарное дерево может быть что - нибудь , который имеет 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 - е издание)

Ответил 26/05/2017 в 18:45
источник пользователем

голоса
0

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

Ответил 28/07/2017 в 21:32
источник пользователем

голоса
0

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

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

Ответил 27/05/2019 в 17:09
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more