


Kod C++ untuk membalikkan laluan dalam pepohon carian binari menggunakan baris gilir
Sebagai contoh, diberikan pepohon carian binari, kita perlu membalikkan laluannya daripada kunci tertentu.
Cara untuk mencari penyelesaian
#🎜🎜🎜, kita #Dalam kaedah ini akan membuat baris gilir dan menolak semua nod sehingga kita mendapat nod akar.p>
Contoh
#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;
}
Salin selepas log masuk
Output#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; }
Before Reversing :
20 30 40 50 60 70 80
After Reversing :
20 30 40 80 60 70 50
Salin selepas log masuk
Penjelasan kod di atasBefore Reversing : 20 30 40 50 60 70 80 After Reversing : 20 30 40 80 60 70 50
🎜🎜🎜 , kita hanya perlu mencari kunci yang diberikan. Apabila kami melintasi pokok, kami meletakkan semua nod ke dalam baris gilir, kini apabila kami menemui nod dengan nilai kunci, kami menukar nilai semua nod laluan yang berada di hadapan, dalam proses itu, laluan kami #🎜🎜 #
KesimpulanKami menyelesaikan masalah membalikkan laluan dalam BST menggunakan baris gilir dan ulangan. Kami juga mempelajari program C++ untuk masalah ini dan kaedah lengkap (generik) untuk menyelesaikannya. Kita boleh menulis program yang sama dalam bahasa lain seperti C, java, python dan bahasa lain. Kami harap anda mendapati tutorial ini membantu.Atas ialah kandungan terperinci Kod C++ untuk membalikkan laluan dalam pepohon carian binari menggunakan baris gilir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Ringkasan aplikasi teknologi baris gilir dalam kelewatan mesej dan cuba semula mesej dalam PHP dan MySQL: Dengan pembangunan berterusan aplikasi web, permintaan untuk pemprosesan serentak yang tinggi dan kebolehpercayaan sistem semakin tinggi dan lebih tinggi. Sebagai penyelesaian, teknologi baris gilir digunakan secara meluas dalam PHP dan MySQL untuk melaksanakan kelewatan mesej dan fungsi cuba semula mesej. Artikel ini akan memperkenalkan aplikasi teknologi baris gilir dalam PHP dan MySQL, termasuk prinsip asas baris gilir, kaedah menggunakan baris gilir untuk melaksanakan kelewatan mesej dan kaedah menggunakan baris gilir untuk melaksanakan percubaan semula mesej, dan memberi

Analisis Prestasi dan Strategi Pengoptimuman JavaQueue Queue Ringkasan: Queue (Queue) ialah salah satu struktur data yang biasa digunakan di Java dan digunakan secara meluas dalam pelbagai senario. Artikel ini akan membincangkan isu prestasi baris gilir JavaQueue dari dua aspek: analisis prestasi dan strategi pengoptimuman serta memberikan contoh kod khusus. Baris Gilir Pengenalan ialah struktur data masuk dahulu keluar dahulu (FIFO) yang boleh digunakan untuk melaksanakan mod pengeluar-pengguna, baris gilir tugas kumpulan benang dan senario lain. Java menyediakan pelbagai pelaksanaan baris gilir, seperti Arr

Cara membalikkan dan membalikkan tatasusunan PHP Dalam PHP, tatasusunan ialah struktur data yang biasa digunakan yang mampu menyimpan dan memanipulasi sejumlah besar data. Kadangkala kita perlu membalikkan atau membalikkan tatasusunan untuk memenuhi keperluan tertentu. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menterbalikkan dan membalikkan tatasusunan, dan memberikan contoh kod yang sepadan. 1. Membalikkan tatasusunan Membalikkan tatasusunan bermaksud menyusun semula elemen dalam tatasusunan dalam susunan terbalik mengikut susunan asalnya. PHP menyediakan pelbagai kaedah untuk membalikkan tatasusunan Berikut adalah dua kaedah yang biasa digunakan:

Baris gilir dalam Java ialah struktur data linear dengan pelbagai fungsi. Baris gilir mempunyai dua titik akhir dan ia mengikut prinsip masuk dahulu keluar (FIFO) untuk memasukkan dan memadam elemennya. Dalam tutorial ini, kita akan mempelajari tentang dua fungsi penting baris gilir dalam Java, iaitu add() dan Offer(). Apakah giliran? Baris gilir dalam Java ialah antara muka yang memanjangkan pakej util dan koleksi. Elemen dimasukkan ke bahagian belakang dan dikeluarkan dari bahagian hadapan. Baris gilir dalam Java boleh dilaksanakan menggunakan kelas seperti senarai terpaut, DeQueue, dan baris gilir keutamaan. Barisan keutamaan ialah bentuk lanjutan baris gilir biasa, di mana setiap elemen mempunyai keutamaan. Kaedah add() baris gilir digunakan untuk memasukkan elemen ke dalam baris gilir. Ia akan menentukan elemen (sebagai

Pelaksanaan pemantauan tugas giliran dan penjadualan tugas dalam PHP dan MySQL Pengenalan Dalam pembangunan aplikasi web moden, baris gilir tugas adalah teknologi yang sangat penting. Melalui baris gilir, kita boleh beratur beberapa tugasan yang perlu dilaksanakan di latar belakang, dan mengawal masa pelaksanaan dan susunan tugas melalui penjadualan tugas. Artikel ini akan memperkenalkan cara melaksanakan pemantauan dan penjadualan tugas dalam PHP dan MySQL, serta menyediakan contoh kod khusus. 1. Prinsip kerja Baris gilir ialah struktur data masuk dahulu keluar (FIFO) yang boleh digunakan untuk

Apakah prinsip dan pelaksanaan sistem baris gilir mel PHP? Dengan perkembangan Internet, e-mel telah menjadi salah satu kaedah komunikasi yang sangat diperlukan dalam kehidupan dan pekerjaan harian manusia. Walau bagaimanapun, apabila perniagaan berkembang dan bilangan pengguna meningkat, menghantar e-mel secara langsung boleh membawa kepada kemerosotan prestasi pelayan, kegagalan penghantaran e-mel dan masalah lain. Untuk menyelesaikan masalah ini, anda boleh menggunakan sistem baris gilir mel untuk menghantar dan mengurus e-mel melalui baris gilir bersiri. Prinsip pelaksanaan sistem baris gilir mel adalah seperti berikut: Apabila mel dimasukkan ke dalam baris gilir, apabila perlu menghantar mel, ia tidak lagi secara langsung

Sebagai contoh, memandangkan pepohon carian binari, kita perlu membalikkan laluannya daripada kunci tertentu. Cara untuk mencari penyelesaian Dalam pendekatan ini kita akan membuat baris gilir dan menolak semua nod sehingga kita mendapat nod akar. p>Contoh #include<bits/stdc++.h>usingnamespacestd;structnode{ intkey; structnode*left,*right;};structnode*newNode(intitem){&nb

Dalam masalah ini, kami akan melakukanMreversequeries pada rentetan yang diberikan mengikut nilaiarray. Kemudian pendekatan naif untuk menyelesaikan masalahmenyimpansetiap segmen rentetan mengikut nilai yang diberikan.Theoptimadapproachusesthelogict that when wereversesthe same substrings two times
