キューを使用して二分探索ツリー内のパスを反転する 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'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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

PHP フラッシュセールシステムにおけるキューと非同期処理の最適化手法 インターネットの急速な発展に伴い、フラッシュセールやラッシュセールなど、電子商取引プラットフォーム上のさまざまな優待活動もユーザーの注目を集めるようになりました。ただし、この同時ユーザー要求の多さは、従来の PHP アプリケーションにとって大きな課題です。システムのパフォーマンスと安定性を向上させ、同時リクエストによるプレッシャーを解決するには、開発者はフラッシュ セール システムを最適化する必要があります。この記事では、PHPフラッシュセールシステムにおけるキューと非同期処理による最適化手法に焦点を当て、具体的なコード例を示します。

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

PHP および MySQL でのキュー メッセージの確認と消費障害処理の実装方法 キューは一般的なメッセージ受け渡しメカニズムであり、システム内の同時実行性が高い問題を解決し、非同期処理と分離を実現するのに役立ちます。キューの設計において、メッセージの確認と消費障害の処理は非常に重要なリンクです。この記事では、PHP と MySQL を使用してキュー メッセージの確認と消費エラーの処理を実装する方法を検討し、具体的なコード例を示します。メッセージ確認はキュー内にあります。メッセージ確認とは、コンシューマがメッセージを正常に処理した後、メッセージをキューに送信することを意味します。
