web-dev-qa-db-fra.com

Différence entre l'arbre binaire et l'arbre de recherche binaire

Quelqu'un peut-il s'il vous plaît expliquer la différence entre arbre binaire et arbre de recherche binaire avec un exemple ?

309
Neel

Arbre binaire: arbre où chaque nœud a jusqu'à deux feuilles

  1
 / \
2   3

Arbre de recherche binaire: Utilisé pour recherche. Un arbre binaire où l'enfant de gauche contient uniquement des nœuds dont la valeur est inférieure à celle du nœud parent et où l'enfant de droite only contient des nœuds avec des valeurs supérieures ou égales à celles du parent.

  2
 / \
1   3
541
Mehrdad

Arbre binaire est une forme spécialisée d'arbre avec deux enfants (enfant de gauche et enfant de droite). C'est simplement la représentation des données dans l'arborescence

arbre de recherche binaire (BST) est un type spécial d'arbre binaire qui suit la condition suivante:

  1. le noeud enfant gauche est plus petit que son noeud parent
  2. le nœud enfant droit est supérieur à son nœud parent
54
Jayzcode

n arbre binaire est constitué de nœuds, où chaque nœud contient un pointeur "gauche", un pointeur "droit" et un élément de données. Le pointeur "root" pointe vers le nœud le plus haut de l'arborescence. Les pointeurs gauche et droit pointent récursivement vers des "sous-arbres" plus petits de chaque côté. Un pointeur nul représente un arbre binaire sans élément - l'arbre vide. La définition formelle récursive est la suivante: un arbre binaire est vide (représenté par un pointeur nul) ou est constitué d'un seul nœud, où les pointeurs gauche et droit (définition récursive en avant) pointent chacun vers un arbre binaire.

n arbre de recherche binaire (BST) ou "arbre binaire ordonné" est un type d’arbre binaire dans lequel les nœuds sont rangés dans l’ordre: pour chaque nœud, tous les éléments de son sous-arbre de gauche sont inférieurs au nœud ( <), et tous les éléments de son sous-arbre droit sont supérieurs au noeud (>).

    5
   / \
  3   6 
 / \   \
1   4   9    

L'arbre montré ci-dessus est un arbre de recherche binaire - le nœud "racine" est un 5 et ses nœuds de sous-arborescence gauche (1, 3, 4) sont <5 et ses nœuds de sous-arborescence droits (6, 9) sont> 5. De manière récursive, chacun des sous-arbres doit également obéir à la contrainte de l’arbre de recherche binaire: dans le sous-arbre (1, 3, 4), le 3 est la racine, le 1 <3 et 4> 3.

Faites attention à la formulation exacte des problèmes - un "arbre de recherche binaire" est différent d'un "arbre binaire".

36
Emmanuel Oddy

Comme tout le monde ci-dessus a expliqué la différence entre l'arbre binaire et l'arbre de recherche binaire, j'ajoute simplement comment tester si l'arbre binaire donné est un arbre de recherche binaire.

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

}

J'espère que cela vous aidera. Désolé si je détourne du sujet car j'estime que cela vaut la peine de le mentionner ici.

13
Trying

Arbre binaire signifie un structure de données qui est composé de nœuds qui peut niquement avoir deux enfants références.

Arbre de recherche binaire (BST) est en revanche une forme spéciale de Arbre binaire structure de données où chaque noeud a une valeur comparable, et les enfants de moindre valeur attachés aux enfants de gauche et ceux de grande taille attachés à droite.

Ainsi, tous les BST sont arbre binaire mais seuls quelques-uns arbre binaire peuvent aussi être BST. Notifier que BST est un sous-ensemble de arbre binaire.

Ainsi, arbre binaire est plus une structure de données générale que arbre de recherche binaire. Et vous devez également notifier que arbre de recherche binaire est un arbre trié alors qu’il n’existe pas un tel ensemble de règles pour le générique arbre binaire.

Arbre binaire

Un Binary Tree qui est pas a BST;

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

Arbre de recherche binaire (arbre trié)

A arbre de recherche binaire qui est aussi un arbre binaire;

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

Arbre de recherche binaire Node property

Signalez également cela pour tout nœud parent dans BST;

  • Tous les nœuds de gauche ont une valeur inférieure à la valeur du nœud parent. Dans l'exemple supérieur, les nœuds avec les valeurs {20, 25, 30} qui sont tous situés à gauche (descendants de gauche) sur 50, sont inférieurs à 50.

  • Tous les nœuds de droite ont une valeur supérieure à celle du nœud parent. Dans l'exemple supérieur, les nœuds avec les valeurs {70, 75, 80} qui sont tous situés à droite (descendants de droite) sur 50, sont supérieurs à 50.

Il n’existe pas de règle de ce type pour Arbre binaire Node. La seule règle pour arbre binaire Node est d'avoir deux enfants, de sorte qu'il s'explique de lui-même. Pourquoi appelé binary .

10
Levent Divilioglu

Un arbre de recherche binaire est un type spécial d'arbre binaire qui présente la propriété suivante: pour tout nœud n, la valeur de chaque nœud descendant dans le sous-arbre gauche de n est inférieure à la valeur de n, et la valeur de chaque nœud descendant dans le sous-arbre de droite est supérieure à la valeur de n.

10
Kaushik Lele

Arbre binaire

Un arbre binaire peut être n'importe quoi qui a 2 enfants et 1 parent. Il peut être implémenté sous forme de liste chaînée ou de tableau, ou avec votre API personnalisée. Une fois que vous commencez à ajouter des règles plus spécifiques dans celui-ci, il devient plus une arborescence spécialisée . La plupart des implémentations connues consistent à ajouter des nœuds plus petits à gauche et des nœuds plus grands à droite.

Par exemple, un arbre binaire étiqueté de taille 9 et de hauteur 3, avec un nœud racine dont la valeur est 2. L'arbre est non équilibré et non trié . https://en.wikipedia.org/wiki/Binary_tree

enter image description here

Par exemple, dans l'arborescence de gauche, A a les 6 enfants {B, C, D, E, F, G}. Il peut être converti en arbre binaire à droite.

enter image description here

Recherche binaire

La recherche binaire est une technique/algorithme utilisée pour trouver un élément spécifique dans la chaîne de nœuds. La recherche binaire fonctionne sur des tableaux triés .

La recherche binaire compare la valeur cible à l'élément central du tableau; si elles sont inégales, la moitié dans laquelle la cible ne peut pas mentir est éliminée et la recherche se poursuit sur la moitié restante jusqu'à ce qu'elle réussisse ou que la moitié restante soit vide. https://en.wikipedia.org/wiki/algorithme_recherche_binaire

enter image description here

Une arborescence représentant la recherche binaire . La matrice recherchée ici est [20, 30, 40, 50, 90, 100] et la valeur cible est 40.

enter image description here

Arbre de recherche binaire

C'est l'une des implémentations de l'arbre binaire. Ceci est spécialisé pour la recherche .

Les structures de données d'arborescence de recherche binaire et d'arborescence binaire sont basées sur la recherche binaire .

Les arbres de recherche binaires (BST), parfois appelés arbres binaires ordonnés ou triés, sont un type particulier de conteneur : structures de données stockant des "éléments" (tels que numéros, noms, etc.) en mémoire. https://en.wikipedia.org/wiki/Binary_search_tree

Un arbre de recherche binaire de taille 9 et de profondeur 3, avec 8 à la racine. Les feuilles ne sont pas dessinées.

enter image description here

Et enfin, un excellent schéma pour la comparaison des performances de structures de données et d'algorithmes bien connus appliqués:

enter image description here

Image prise de Algorithmes (4ème édition)

5
Teoman shipahi

Un arbre binaire est un arbre dont les enfants ne sont jamais plus de deux. Un arbre de recherche binaire suit l'invariant selon lequel l'enfant gauche doit avoir une valeur inférieure à la clé du nœud racine, tandis que l'enfant droit doit avoir une valeur supérieure à celle de la clé du nœud racine.

4
nana yaah
  • Arbre de recherche binaire: lorsque vous parcourez l'ordre dans l'ordre binaire, vous obtenez des valeurs triées des éléments insérés
  • Arbre binaire: aucun ordre trié n'est trouvé dans aucun type de parcours
4
AlienOnEarth

Pour vérifier si un arbre binaire donné est ou non une recherche binaire, voici une approche alternative.

Traverse Tree In Inorder Mode (ie Enfant Gauche -> Parent -> Enfant Droite), Stocker Traversé Node Les données d'une variable temporaire permettent de dire temp =, juste avant de stocker dans temp, Vérifier si les données du nœud actuel sont plus élevées que les précédentes ou non. Alors juste pause c'est terminé, Tree n'est pas Binary Search Tree sinon traversez jusqu'à la fin.

Voici un exemple avec 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;
}

Maintenir la variable de température à l'extérieur

3
Neeraj Jain

Dans un arbre de recherche binaire, tous les nœuds sont disposés dans un ordre spécifique - les nœuds situés à gauche d'un nœud racine ont une valeur inférieure à celle de la racine et tous les nœuds situés à droite d'un nœud ont des valeurs supérieures à la valeur du paramètre. racine.

1
Spencer Cheng

Une arborescence peut être appelée en tant qu'arborescence binaire si et seulement si le nombre maximal d'enfants de l'un des nœuds est de deux.

Une arborescence peut être appelée en tant qu'arborescence de recherche binaire si et seulement si le nombre maximal d'enfants de l'un des nœuds est égal à deux et que l'enfant de gauche est toujours plus petit que l'enfant de droite.

0
jith912