指定された二分探索ツリー内のすべてのより大きな値を各ノードに追加します
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 サイトの他の関連記事を参照してください。

ホット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)

ホットトピック









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

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

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

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

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

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

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

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