목차
솔루션을 찾는 방법
Example
Output
위 코드 설명
결론
백엔드 개발 C++ 큐를 사용하여 이진 검색 트리에서 경로를 바꾸는 C++ 코드

큐를 사용하여 이진 검색 트리에서 경로를 바꾸는 C++ 코드

Sep 14, 2023 pm 07:21 PM
뒤집다 대기줄 이진 검색 트리

예를 들어 이진 검색 트리가 있는 경우 특정 키의 경로를 바꿔야 합니다.

큐를 사용하여 이진 검색 트리에서 경로를 바꾸는 C++ 코드

큐를 사용하여 이진 검색 트리에서 경로를 바꾸는 C++ 코드

솔루션을 찾는 방법

이 방법에서는 큐를 만들고 루트 노드를 얻을 때까지 모든 노드를 푸시합니다.

p>

Example

 
#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&#39;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;
}
로그인 후 복사

Output

Before Reversing :
20 30 40 50 60 70 80
After Reversing :
20 30 40 80 60 70 50
로그인 후 복사

위 코드 설명

이 방법에서는 주어진 키만 검색합니다. 트리를 순회할 때 모든 노드를 대기열에 넣고 이제 키 값이 있는 노드를 찾으면 이전에 온 모든 경로 노드의 값과 그 과정에서 경로를 교환합니다

결론

큐와 재귀를 사용하여 BST의 경로 반전 문제를 해결했습니다. 우리는 또한 이 문제에 대한 C++ 프로그램과 이를 해결하기 위한 완전한 방법(일반)을 배웠습니다. C, Java, Python 및 기타 언어와 같은 다른 언어로 동일한 프로그램을 작성할 수 있습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

위 내용은 큐를 사용하여 이진 검색 트리에서 경로를 바꾸는 C++ 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 및 MySQL의 메시지 지연 및 메시지 재시도에 큐 기술 적용 PHP 및 MySQL의 메시지 지연 및 메시지 재시도에 큐 기술 적용 Oct 15, 2023 pm 02:26 PM

PHP 및 MySQL의 메시지 지연 및 메시지 재시도에 대한 큐 기술 적용 요약: 웹 애플리케이션의 지속적인 개발로 인해 높은 동시 처리 및 시스템 안정성에 대한 요구가 점점 더 높아지고 있습니다. 이에 대한 해결책으로 큐 기술은 메시지 지연 및 메시지 재시도 기능을 구현하기 위해 PHP 및 MySQL에서 널리 사용됩니다. 이 기사에서는 큐의 기본 원리, 큐를 사용하여 메시지 지연을 구현하는 방법, 큐를 사용하여 메시지 재시도를 구현하는 방법을 포함하여 PHP 및 MySQL의 큐 기술 적용을 소개하고 다음을 제공합니다.

Java Queue 큐 성능 분석 및 최적화 전략 Java Queue 큐 성능 분석 및 최적화 전략 Jan 09, 2024 pm 05:02 PM

JavaQueue의 성능 분석 및 최적화 전략 큐 요약: 큐(Queue)는 Java에서 일반적으로 사용되는 데이터 구조 중 하나이며 다양한 시나리오에서 널리 사용됩니다. 이 기사에서는 성능 분석 및 최적화 전략이라는 두 가지 측면에서 JavaQueue 대기열의 성능 문제를 논의하고 특정 코드 예제를 제공합니다. 소개 큐는 생산자-소비자 모드, 스레드 풀 작업 큐 및 기타 시나리오를 구현하는 데 사용할 수 있는 FIFO(선입선출) 데이터 구조입니다. Java는 Arr과 같은 다양한 대기열 구현을 제공합니다.

PHP 배열을 역순 및 역순으로 정렬하는 방법 PHP 배열을 역순 및 역순으로 정렬하는 방법 Sep 05, 2023 am 08:28 AM

PHP 배열을 뒤집고 뒤집는 방법 PHP에서 배열은 대량의 데이터를 저장하고 조작할 수 있는 일반적으로 사용되는 데이터 구조입니다. 때로는 특정 요구 사항을 충족하기 위해 어레이를 뒤집거나 뒤집어야 할 때도 있습니다. 이 기사에서는 PHP를 사용하여 배열을 뒤집거나 뒤집는 방법을 소개하고 해당 코드 예제를 제공합니다. 1. 배열 역전 배열 역전이란 배열의 요소를 원래 순서에 따라 역순으로 재배열하는 것을 의미합니다. PHP는 배열을 역전시키는 다양한 방법을 제공합니다. 다음은 일반적으로 사용되는 두 가지 방법입니다.

Java에서 대기열의 add() 메소드와 Offer() 메소드의 차이점은 무엇입니까? Java에서 대기열의 add() 메소드와 Offer() 메소드의 차이점은 무엇입니까? Aug 27, 2023 pm 02:25 PM

Java의 큐는 여러 기능을 갖춘 선형 데이터 구조입니다. 큐에는 두 개의 엔드포인트가 있으며 해당 요소를 삽입하고 삭제하는 데 FIFO(선입선출) 원칙을 따릅니다. 이 튜토리얼에서는 add()와 Offer()라는 Java 대기열의 두 가지 중요한 기능에 대해 알아봅니다. 대기열이란 무엇입니까? Java의 대기열은 util 및 컬렉션 패키지를 확장하는 인터페이스입니다. 요소는 백엔드에 삽입되고 프런트엔드에서 제거됩니다. Java의 대기열은 연결 목록, DeQueue 및 우선 순위 대기열과 같은 클래스를 사용하여 구현할 수 있습니다. 우선순위 큐는 일반 큐의 확장된 형태로, 각 요소에는 우선순위가 있습니다. 큐의 add() 메소드는 큐에 요소를 삽입하는 데 사용됩니다. 요소를 정의합니다(

PHP 및 MySQL의 대기열 작업 모니터링 및 작업 스케줄링 구현 계획 PHP 및 MySQL의 대기열 작업 모니터링 및 작업 스케줄링 구현 계획 Oct 15, 2023 am 09:15 AM

PHP 및 MySQL에서 대기열 작업 모니터링 및 작업 예약 구현 소개 현대 웹 애플리케이션 개발에서 작업 대기열은 매우 중요한 기술입니다. 큐를 통해 백그라운드에서 실행해야 하는 일부 작업을 대기열에 넣을 수 있고, 작업 스케줄링을 통해 작업의 실행 시간과 순서를 제어할 수 있습니다. 이 기사에서는 PHP 및 MySQL에서 작업 모니터링 및 예약을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 큐의 작동 원리 큐는 다음 작업에 사용할 수 있는 FIFO(선입선출) 데이터 구조입니다.

PHP 메일 큐 시스템의 원리와 구현은 무엇입니까? PHP 메일 큐 시스템의 원리와 구현은 무엇입니까? Sep 13, 2023 am 11:39 AM

PHP 메일 큐 시스템의 원리와 구현은 무엇입니까? 인터넷의 발달과 함께 이메일은 사람들의 일상생활과 업무에서 없어서는 안 될 의사소통 수단 중 하나가 되었습니다. 그러나 사업이 성장하고 사용자 수가 증가함에 따라 이메일을 직접 보내는 경우 서버 성능 저하, 이메일 전달 실패 등의 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 메일 대기열 시스템을 사용하여 직렬 대기열을 통해 이메일을 보내고 관리할 수 있습니다. 메일 대기열 시스템의 구현 원리는 다음과 같습니다. 메일이 대기열에 들어갈 때, 메일을 보내야 할 때 더 이상 직접적으로 메일을 보내지 않습니다.

번역: M 쿼리의 경우 주어진 문자열의 범위를 반대로 바꿉니다. 번역: M 쿼리의 경우 주어진 문자열의 범위를 반대로 바꿉니다. Aug 25, 2023 pm 08:09 PM

이 문제에서는 배열 값에 따라 주어진 문자열에 대해 M 역방향 쿼리를 수행합니다. 문제를 해결하기 위한 순진한 접근 방식은 주어진 배열 값에 따라 각 문자열 세그먼트를 역으로 저장합니다. 최적화된 접근 방식은 동일한 하위 문자열을 두 번 뒤집는 논리를 사용합니다.

큐를 사용하여 이진 검색 트리에서 경로를 바꾸는 C++ 코드 큐를 사용하여 이진 검색 트리에서 경로를 바꾸는 C++ 코드 Sep 14, 2023 pm 07:21 PM

예를 들어, 이진 검색 트리가 주어지면 특정 키에서 경로를 바꿔야 합니다. 솔루션을 찾는 방법 이 접근 방식에서는 대기열을 생성하고 루트 노드를 얻을 때까지 모든 노드를 푸시합니다. p>예제 #include<bits/stdc++.h>usingnamespacestd;structnode{ intkey structnode*left,*right;};structnode*newNode(intitem){&nb;

See all articles