Comment trouver l'élément le plus proche d'une valeur de clé donnée dans un arbre de recherche binaire?
Donné un bst avec des valeurs entières, comme les touches, comment puis-je trouver le plus proche du nœud de cette clé dans un bst ?
Le BST est représenté à l'aide d'un objet de nœuds (Java). La plus proche sera, par exemple 4,5,9 et si la clé est de 6, il sera de retour 5 ..
source d'informationauteur phoenix
Vous devez vous connecter pour publier un commentaire.
Traverse l'arbre comme vous le feriez pour trouver l'élément. Alors que vous n'avez que l'enregistrement de la valeur qui est la plus proche de votre clé. Maintenant, quand vous n'avez pas trouvé un nœud pour la clé elle-même de retour de la valeur enregistrée.
Donc, si vous avez été la recherche de la clé
3
dans l'arbre suivant vous vous retrouvez sur le nœud6
sans trouver un match, mais votre valeur enregistrée serait2
car c'était le plus proche de la clé de tous les nœuds que vous avez dû traverser (2
,7
,6
).Traverse prend O(n) fois. Peut-on procéder de haut en bas? comme cette récursive code:
Voici une solution récursive en Python:
Il peut être résolu en O(log*n*).
L'algorithme peut être mis en œuvre avec le code C++ suivant:
Vous pouvez visiter mon blog pour plus de détails.
Le problème avec l'approche de la "gauche de droite de la traversée et de trouver le plus proche" est qu'elle dépend plus de l'ordre dans lequel les éléments ont été saisies pour créer de la STB. Si l'on recherche 11 pour la BST séquence 22, 15, 16, 6,14,3,1,90, la méthode ci-dessus sera de retour le 15 alors que la bonne réponse est 14.
La seule méthode à utiliser la récursivité pour parcourir tous les nœuds, le retour le plus proche que l'un à la suite de la fonction récursive. Cela va nous donner la valeur la plus proche
Cela peut être fait en utilisant une File d'attente et un ArrayList.
File d'attente sera utilisé pour effectuer une largeur de recherche sur l'arbre.
Liste de tableaux sera utilisé pour stocker l'élément de l'arbre en largeur d'abord de l'ordre.
Voici le code pour implémenter la même
Ci-dessous on travaille avec différents échantillons que j'ai.
Voici tout le code Java pour trouver l'élément le plus proche dans un BST.
La solution la plus simple est de répéter votre arbre depuis quand
À vous de la mise en œuvre.