


Code C++ pour inverser les chemins dans un arbre de recherche binaire à l'aide de files d'attente
Par exemple, étant donné un arbre de recherche binaire, nous devons inverser son chemin à partir d'une clé spécifique.
Façon de trouver une solution
Dans cette méthode, nous allons créer une file d'attente et pousser tous les nœuds jusqu'à ce que nous obtenions le nœud racine.
p>
Exemple
#include <bits/stdc++.h> using namespace std; struct node { int key; struct node *left, *right; }; struct node* newNode(int item){ struct node* temp = new node; temp->key = item; temp->left = temp->right = NULL; return temp; } void inorder(struct node* root){ if (root != NULL) { inorder(root->left); cout << root->key << " "; inorder(root->right); } } void Reversing(struct node** node, int& key, queue<int>& q1){ /* If the tree is empty then return*/ if (node == NULL) return; if ((*node)->key == key){ // if we find the key q1.push((*node)->key); // we push it into our queue (*node)->key = q1.front(); // we change the first queue element with current q1.pop(); // we pop the first element } else if (key < (*node)->key){ // if key is less than current node's value q1.push((*node)->key); // we push the element in our queue Reversing(&(*node)->left, key, q1); //we go to the left subtree using a recursive call (*node)->key = q1.front(); //we reverse the elements q1.pop(); // we pop the first element } else if (key > (*node)->key){ // if key greater than node key then q1.push((*node)->key);// we push node key into queue Reversing(&(*node)->right, key, q1);// we go to right subtree using a recursive call (*node)->key = q1.front();// replace queue front to node key q1.pop(); // we pop the first element } return; } struct node* insert_node(struct node* node, // function to insert node nodes in our BST int key){ if (node == NULL) return newNode(key); // if tree is empty we return a new node if (key < node->key) // else we push that in our tree node->left = insert_node(node->left, key); else if (key > node->key) node->right = insert_node(node->right, key); return node; // returning the node } int main(){ struct node* root = NULL; queue<int> q1; int k = 80; /****************Creating the BST*************************/ root = insert_node(root, 50); insert_node(root, 30); insert_node(root, 20); insert_node(root, 40); insert_node(root, 70); insert_node(root, 60); insert_node(root, 80); cout << "Before Reversing :" << "\n"; inorder(root); cout << "\n"; Reversing(&root, k, q1); cout << "After Reversing :" << "\n"; // print inorder of reverse path tree inorder(root); return 0; }
Sortie
Before Reversing : 20 30 40 50 60 70 80 After Reversing : 20 30 40 80 60 70 50
Explication du code ci-dessus
Dans cette méthode, nous recherchons simplement la clé donnée. Lorsque nous parcourons l'arbre, nous mettons tous les nœuds dans une file d'attente et maintenant, lorsque nous trouvons le nœud avec la valeur clé, nous échangeons les valeurs de tous les nœuds de chemin qui nous ont précédés et, ce faisant, notre chemin
Conclusion
Nous avons résolu le problème de l'inversion des chemins dans BST en utilisant des files d'attente et la récursivité. Nous avons également appris le programme C++ pour ce problème et la méthode complète (générique) pour le résoudre. Nous pouvons écrire le même programme dans d'autres langages tels que C, Java, Python et d'autres langages. Nous espérons que vous avez trouvé ce tutoriel utile.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Application de la technologie de file d'attente au délai de message et aux nouvelles tentatives de message dans PHP et MySQL Résumé : Avec le développement continu des applications Web, la demande de traitement hautement simultané et de fiabilité du système devient de plus en plus élevée. En tant que solution, la technologie de file d'attente est largement utilisée dans PHP et MySQL pour implémenter des fonctions de délai de message et de nouvelle tentative de message. Cet article présentera l'application de la technologie de file d'attente dans PHP et MySQL, y compris les principes de base des files d'attente, les méthodes d'utilisation des files d'attente pour implémenter le délai de message et les méthodes d'utilisation des files d'attente pour implémenter les nouvelles tentatives de message, et donnera

Analyse des performances et stratégie d'optimisation de JavaQueue Résumé de la file d'attente : La file d'attente (file d'attente) est l'une des structures de données couramment utilisées en Java et est largement utilisée dans divers scénarios. Cet article abordera les problèmes de performances des files d'attente JavaQueue sous deux aspects : l'analyse des performances et les stratégies d'optimisation, et donnera des exemples de code spécifiques. Introduction La file d'attente est une structure de données premier entré, premier sorti (FIFO) qui peut être utilisée pour implémenter le mode producteur-consommateur, la file d'attente des tâches du pool de threads et d'autres scénarios. Java fournit une variété d'implémentations de files d'attente, telles que Arr

Comment inverser et inverser un tableau PHP En PHP, un tableau est une structure de données couramment utilisée capable de stocker et de manipuler de grandes quantités de données. Parfois, nous devons inverser ou inverser le tableau pour répondre à des besoins spécifiques. Cet article explique comment utiliser PHP pour inverser et inverser un tableau et donne des exemples de code correspondants. 1. Inverser un tableau Inverser un tableau signifie réorganiser les éléments du tableau dans l'ordre inverse selon leur ordre d'origine. PHP fournit une variété de méthodes pour inverser les tableaux. Voici deux méthodes couramment utilisées :

La file d'attente en Java est une structure de données linéaire avec plusieurs fonctions. La file d'attente a deux points de terminaison et suit le principe premier entré, premier sorti (FIFO) pour insérer et supprimer ses éléments. Dans ce didacticiel, nous découvrirons deux fonctions importantes des files d'attente en Java, à savoir add() et Offer(). Qu'est-ce qu'une file d'attente ? Queue en Java est une interface qui étend les packages util et collection. Les éléments sont insérés dans le backend et supprimés du frontend. Les files d'attente en Java peuvent être implémentées à l'aide de classes telles que les listes chaînées, DeQueue et les files d'attente prioritaires. Une file d'attente prioritaire est une forme étendue d'une file d'attente normale, dans laquelle chaque élément a une priorité. La méthode add() de la file d'attente est utilisée pour insérer des éléments dans la file d'attente. Il définira l'élément (comme

Implémentation de la surveillance des tâches de file d'attente et de la planification des tâches dans PHP et MySQL Introduction Dans le développement d'applications Web modernes, la file d'attente de tâches est une technologie très importante. Grâce aux files d'attente, nous pouvons mettre en file d'attente certaines tâches qui doivent être exécutées en arrière-plan et contrôler le temps d'exécution et l'ordre des tâches grâce à la planification des tâches. Cet article présentera comment implémenter la surveillance et la planification des tâches dans PHP et MySQL, et fournira des exemples de code spécifiques. 1. Principe de fonctionnement de la file d'attente La file d'attente est une structure de données premier entré, premier sorti (FIFO) qui peut être utilisée pour

Quel est le principe et la mise en œuvre du système de file d'attente de courrier PHP ? Avec le développement d’Internet, le courrier électronique est devenu l’un des moyens de communication indispensables dans la vie quotidienne et professionnelle des gens. Cependant, à mesure que l'entreprise se développe et que le nombre d'utilisateurs augmente, l'envoi direct d'e-mails peut entraîner une dégradation des performances du serveur, un échec de livraison des e-mails et d'autres problèmes. Pour résoudre ce problème, vous pouvez utiliser un système de file d'attente de messagerie pour envoyer et gérer des e-mails via une file d'attente série. Le principe de mise en œuvre du système de file d'attente de courrier est le suivant : Lorsque le courrier est mis en file d'attente, lorsqu'il est nécessaire d'envoyer le courrier, il ne l'est plus directement

Par exemple, étant donné un arbre de recherche binaire, nous devons inverser son chemin à partir d'une clé spécifique. Façons de trouver la solution Dans cette approche, nous allons créer une file d'attente et pousser tous les nœuds jusqu'à ce que nous obtenions le nœud racine. p>Exemple #include<bits/stdc++.h>usingnamespacestd;structnode{ intkey; structnode*left,*right;};structnode*newNode(intitem){&nb

Dans ce problème, nous effectuerons des requêtes inverses sur la chaîne donnée en fonction des valeurs du tableau. Ensuite, une approche naïve pour résoudre le problème consiste à inverser chaque segment de chaîne en fonction de la valeur du tableau donnée. L'approche optimisée utilise la logique qui consiste à inverser deux fois la même sous-chaîne.
