目次
解決策を見つける方法
Example
出力
上記のコードの説明
結論
ホームページ バックエンド開発 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;
}
ログイン後にコピー

出力

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 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP および MySQL でのメッセージ遅延とメッセージ再試行におけるキュー テクノロジーの応用 PHP および MySQL でのメッセージ遅延とメッセージ再試行におけるキュー テクノロジーの応用 Oct 15, 2023 pm 02:26 PM

PHP および MySQL におけるメッセージ遅延とメッセージ再試行におけるキュー テクノロジーの応用概要: Web アプリケーションの継続的な開発に伴い、高い同時処理とシステムの信頼性に対する要求がますます高まっています。解決策として、キュー テクノロジーはメッセージ遅延機能とメッセージ再試行機能を実装するために PHP と MySQL で広く使用されています。この記事では、キューの基本原理、キューを使用してメッセージ遅延を実装する方法、キューを使用してメッセージの再試行を実装する方法など、PHP および MySQL におけるキュー テクノロジのアプリケーションを紹介します。

Java Queueキューのパフォーマンスの分析と最適化戦略 Java Queueキューのパフォーマンスの分析と最適化戦略 Jan 09, 2024 pm 05:02 PM

JavaQueue のパフォーマンス分析と最適化戦略 キューの概要: キュー (キュー) は Java で一般的に使用されるデータ構造の 1 つであり、さまざまなシナリオで広く使用されています。この記事では、JavaQueue キューのパフォーマンスの問題について、パフォーマンス分析と最適化戦略の 2 つの側面から説明し、具体的なコード例を示します。はじめに キューは、プロデューサー/コンシューマー モード、スレッド プール タスク キュー、およびその他のシナリオの実装に使用できる先入れ先出し (FIFO) データ構造です。 Java は、Arr などのさまざまなキュー実装を提供します。

Javaでは、キューのadd()メソッドとoffer()メソッドの違いは何ですか? Javaでは、キューのadd()メソッドとoffer()メソッドの違いは何ですか? Aug 27, 2023 pm 02:25 PM

Java のキューは、複数の機能を備えた線形データ構造です。キューには 2 つのエンドポイントがあり、要素の挿入と削除には先入れ先出し (FIFO) 原則に従います。このチュートリアルでは、Java のキューの 2 つの重要な関数、add() と Offer() について学習します。キューとは何ですか? Java のキューは、ユーティリティ パッケージとコレクション パッケージを拡張するインターフェイスです。要素はバックエンドに挿入され、フロントエンドから削除されます。 Java のキューは、リンク リスト、DeQueue、優先キューなどのクラスを使用して実装できます。優先キューは通常のキューの拡張形式であり、各要素には優先順位があります。キューの add() メソッドは、キューに要素を挿入するために使用されます。要素を(次のように)定義します。

PHP配列を反転および逆順序にする方法 PHP配列を反転および逆順序にする方法 Sep 05, 2023 am 08:28 AM

PHP 配列を反転および反転する方法 PHP では、配列は、大量のデータを保存および操作できる一般的に使用されるデータ構造です。特定のニーズを満たすために、配列を反転または反転する必要がある場合があります。この記事では、PHPを使用して配列を反転および反転する方法と、対応するコード例を紹介します。 1. 配列の反転 配列の反転とは、配列内の要素を元の順序に従って逆の順序で並べ替えることを意味します。 PHP には、配列を反転するためのさまざまなメソッドが用意されています。一般的に使用される 2 つのメソッドを次に示します。

PHPとMySQLでのキュータスク監視とタスクスケジューリングの実装計画 PHPとMySQLでのキュータスク監視とタスクスケジューリングの実装計画 Oct 15, 2023 am 09:15 AM

PHP および MySQL でのキュー タスクの監視とタスク スケジューリングの実装 はじめに 最新の Web アプリケーション開発において、タスク キューは非常に重要なテクノロジです。キューを使用すると、バックグラウンドで実行する必要があるいくつかのタスクをキューに入れ、タスクのスケジュール設定を通じてタスクの実行時間と順序を制御できます。この記事では、PHP と MySQL でタスクの監視とスケジュールを実装する方法を紹介し、具体的なコード例を示します。 1. キューの動作原理 キューは先入れ先出し (FIFO) データ構造であり、

PHPメールキューシステムの原理と実装は何ですか? PHPメールキューシステムの原理と実装は何ですか? Sep 13, 2023 am 11:39 AM

PHPメールキューシステムの原理と実装は何ですか?インターネットの発展に伴い、電子メールは人々の日常生活や仕事に欠かせないコミュニケーション手段の 1 つになりました。しかし、ビジネスが成長し、ユーザー数が増加すると、メールを直接送信すると、サーバーのパフォーマンスの低下やメール配信の失敗などの問題が発生する可能性があります。この問題を解決するには、メール キュー システムを使用して、シリアル キューを通じて電子メールを送信および管理します。メールキューシステムの実装原理は次のとおりです。メールがキューに入れられるとき、メールを送信する必要があるときは、直接送信する必要はありません。

翻訳: M クエリの場合、指定された文字列の範囲を逆にします。 翻訳: M クエリの場合、指定された文字列の範囲を逆にします。 Aug 25, 2023 pm 08:09 PM

この問題では、配列値に従って指定された文字列に対して複数の逆クエリを実行します。問題を解決するための単純なアプローチでは、指定された配列値に従って各文字列セグメントを逆に格納します。最適化されたアプローチでは、同じ部分文字列を 2 回逆順に実行した場合のロジックが使用されます。

キューを使用して二分探索ツリー内のパスを反転する 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