目次
入力
出力
説明
ホームページ バックエンド開発 C++ 指定された二分探索ツリー内のすべてのより大きな値を各ノードに追加します

指定された二分探索ツリー内のすべてのより大きな値を各ノードに追加します

Sep 07, 2023 pm 12:17 PM
ノード 二分探索木 大きい値

指定された二分探索ツリー内のすべてのより大きな値を各ノードに追加します

BST (Binary Search Tree) は、すべての左側のノードの値がルート ノードの値およびすべての右側のノードの値よりも小さいバイナリ ツリーの形式です。ルートノードの値より大きいです。この問題では、バイナリ ツリーを取得し、現在のノード値より大きいすべての値をそれに追加します。 「より大きな値をすべて BST の各ノードに追加する」という問題は、BST の場合、現在のノード値よりも大きなすべてのノード値をそのノード値に追加するように単純化されます。

BST 問題ステートメントの各ノードに、より大きな値をすべて追加します:

二分探索木 (BST) が与えられた場合、より大きな値をすべて各ノードに追加する必要があります。ノード。

入力

    10
    /  \
   /    \
  5     20
 / \   / \
1   7   1  5
ログイン後にコピー

出力

      70
    /   \
   82   45
  / \   / \
83 77  60 25
ログイン後にコピー

説明

このプログラムは、二分探索木を、ノード値がすべて含まれる二分木に変換します。大きな要素とノードの元の値の合計。

二分探索ツリー ソリューションの各ノードに、より大きな値をすべて追加します。

逆順トラバーサル (左のサブツリーではなく最初に右のサブツリーを再帰的に呼び出す) を使用し、これまでに通過したノードの合計を格納する変数。

次に、この合計を使用して現在のノードの値を変更します。最初にその値を合計に追加し、次にノードの値をこの合計で置き換えます。

#include <iostream >
using namespace std;
struct node {
   int data;
   node *left;
   node *right;
};
node *newNode(int key) {
   node *temp=new node;
   temp->left=NULL;
   temp->right=NULL;
   temp->data=key;
   return temp;
}
void Inorder(node *root) {
   if(!root)
      return;
   Inorder(root->left);
   cout<<root->data<<" ";
   Inorder(root->right);
}
node *Insert(node *root,int key) {
   if(!root)
      return newNode(key);
   if(key<root->data)
      root->left=Insert(root->left,key);
   else
      root->right=Insert(root->right,key);
   return root;
}
void RevInorderAdd(node *root,int &sum) {
   if(!root)
      return;
   RevInorderAdd(root->right,sum);
   sum+=root->data;
   root->data=sum;
   RevInorderAdd(root->left,sum);
}
void AddGreater(node *root) {
   int sum=0;
   RevInorderAdd(root,sum);
}
int main() {
   /* Let us create following BST
      10
      / \
     5   20
    / \  / \
  1  7 15 25 */
   node *root = NULL;
   root = Insert(root, 10);
   Insert(root, 20);
   Insert(root, 25);
   Insert(root, 15);
   Insert(root, 5);
   Insert(root, 7);
   Insert(root, 1);
   Inorder(root);
   cout<<endl;
   AddGreater(root);
   Inorder(root);
   cout<<endl;
   return 0;
}
ログイン後にコピー

以上が指定された二分探索ツリー内のすべてのより大きな値を各ノードに追加しますの詳細内容です。詳細については、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)

ノード X から始まるサブツリーの最小重みと最大 D の距離を照会します。 ノード X から始まるサブツリーの最小重みと最大 D の距離を照会します。 Aug 25, 2023 am 11:25 AM

コンピューター プログラミングを行う場合、特定のノードから D 単位以上離れたノードをサブツリーに含めることができないという条件で、特定のノードに由来するサブツリーの最小重みを見つけることが必要になる場合があります。この問題は、グラフ理論、ツリーベースのアルゴリズム、ネットワーク最適化など、さまざまな分野やアプリケーションで発生します。サブツリーは、指定されたノードがサブツリーのルート ノードとして機能する、より大きなツリー構造のサブセットです。サブツリーには、ルート ノードのすべての子孫とそれらの接続エッジが含まれます。ノードの重みは、そのノードに割り当てられた特定の値を指し、その重要性、重要性、またはその他の関連するメトリックを表すことができます。この問題の目標は、ルート ノードから最大 D 単位離れたノードにサブツリーを制限しながら、サブツリー内のすべてのノード間の最小重みを見つけることです。次の記事では、サブツリーから最小重みをマイニングする複雑さについて詳しく説明します。

キューを使用して二分探索ツリー内のパスを反転する C++ コード キューを使用して二分探索ツリー内のパスを反転する C++ コード Sep 14, 2023 pm 07:21 PM

たとえば、二分探索ツリーが与えられた場合、特定のキーからそのパスを逆にする必要があります。解決策を見つける方法 このアプローチでは、キューを作成し、ルート ノードを取得するまですべてのノードをプッシュします。 p>例 #include<bits/stdc++.h>usingnamespacestd;structnode{ intkey; structnode*left,*right;};structnode*newNode(intitem){&nb

Vue と jsmind を使用してマインド マップのノード コピーおよびカット機能を実装するにはどうすればよいですか? Vue と jsmind を使用してマインド マップのノード コピーおよびカット機能を実装するにはどうすればよいですか? Aug 15, 2023 pm 05:57 PM

Vue と jsmind を使用してマインド マップのノード コピーおよびカット機能を実装するにはどうすればよいですか?マインド マップは、考えを整理し、思考ロジックを整理するのに役立つ一般的な思考ツールです。ノードのコピーとカット機能は、マインド マップでよく使用される操作であり、既存のノードをより便利に再利用し、思考整理の効率を向上させることができます。この記事では、Vue と jsmind の 2 つのツールを使用して、マインド マップのノードのコピーとカット機能を実装します。まず、Vue と jsmind をインストールし、

Python で二分探索ツリーを実装する方法 Python で二分探索ツリーを実装する方法 Jun 10, 2023 am 08:57 AM

二分探索木 (BinarySearchTree、BST) は、二分木に基づく検索アルゴリズムです。その特徴は、ツリー内の各ノードの左側のサブツリーの値がこのノードの値より小さく、右側のサブツリーの値がこのノードの値より大きいことです。したがって、BST の検索および挿入操作の時間計算量は O(logN) です。 Python で二分探索ツリーを実装する方法は比較的簡単です。Python にはリストと辞書という 2 つの組み込みデータ構造があり、どちらも二分ツリーの実装に使用できるためです。この時点で

C++ のバイナリ ヒープとバイナリ検索ツリー C++ のバイナリ ヒープとバイナリ検索ツリー Aug 22, 2023 pm 04:10 PM

C++ プログラミングでは、バイナリ ヒープとバイナリ検索ツリーはよく使用される 2 つのデータ構造であり、類似点もありますが、相違点もあります。この記事では、バイナリ ヒープとバイナリ サーチ ツリーの概念、基本操作、および応用シナリオをそれぞれ紹介します。 1. バイナリ ヒープ 1.1 概念 バイナリ ヒープは、次の 2 つの特性を満たす完全なバイナリ ツリーです。 1.1.1 ヒープの順序付け ヒープの順序付けとは、バイナリ ヒープ内で各ノードの値が次の値を超えない (または下回らない) ことを意味します。親ノードの値。ここでは例として最大ヒープを取り上げます。つまり、ルート ノードの値がツリー全体の最大値であり、

jsでノードを削除する方法は何ですか jsでノードを削除する方法は何ですか Sep 01, 2023 pm 05:00 PM

js でノードを削除するメソッドは次のとおりです: 1. RemoveChild() メソッドは、指定された子ノードを親ノードから削除するために使用されます。これには 2 つのパラメータが必要です。最初のパラメータは削除される子ノードで、2 番目のパラメータは次のとおりです。親ノード ノード; 2.parentNode.removeChild() メソッドは、親ノードを介して直接呼び出して子ノードを削除できます; 3.remove() メソッドは、親ノードを指定せずにノードを直接削除できます; 4. innerHTML 属性は、ノードのコンテンツを削除するために使用されます。

Java は、Math クラスの max() 関数を使用して、2 つの数値のうち大きい方を取得します。 Java は、Math クラスの max() 関数を使用して、2 つの数値のうち大きい方を取得します。 Jul 24, 2023 pm 11:17 PM

Java では、Math クラスの max() 関数を使用して 2 つの数値のうち大きい方の値を取得します。Java プログラミングでは、2 つの数値のサイズを比較し、大きい方の数値を選択して操作を実行することがよくあります。 Java の Math クラスは、数学演算用の関数を多数提供します。その中で、max() 関数は、2 つの数値のうち大きい方の値を取得するのに役立ちます。 Math.max() 関数は次のように定義されます。 publicstaticintmax(inta,intb) この関数は 2 つの整数を受け入れます。

C# を使用して二分探索ツリー アルゴリズムを作成する方法 C# を使用して二分探索ツリー アルゴリズムを作成する方法 Sep 19, 2023 pm 01:03 PM

C# を使用してバイナリ検索ツリー アルゴリズムを作成する方法には、特定のコード サンプルが必要です。バイナリ検索ツリー (BinarySearchTree、BST と呼ばれる) は、高速な挿入、検索、削除操作の特徴を持つ一般的に使用されるデータ構造です。 C# では、オブジェクト指向アプローチを使用して二分探索ツリー アルゴリズムを作成できます。まず、値と左右の子ノードへの 2 つのポインターを含む二分探索ツリー ノードのクラスを定義する必要があります。コードは次のようになります: publicclassBST

See all articles