指定された二分探索ツリー内のより大きな値をすべて各ノードに追加します
ここで興味深い問題がわかります。指定された二分探索ツリーの各ノードに、より大きな値を追加します。最初と最後のツリーは次のようになります -
##Algorithm
bstUpdate(root, sum) -
Begin if root is null, then stop bstUpdate(right of room, sum) sum := sum + value of root update root value using sum bstUpdate(left of room, sum) End
例
#include<iostream> using namespace std; class Node { public: int data; Node *left, *right; }; Node *getNode(int item) { Node *newNode = new Node(); newNode->data = item; newNode->left = newNode->right = NULL; return newNode; } void updateBST(Node *root, int *sum) { if (root == NULL) return; updateBST(root->right, sum); //update right sub tree *sum = *sum + root->data; root->data = *sum; //update root data updateBST(root->left, sum); //update left sub tree } void BSTUpdate(Node *root) { int sum = 0; updateBST(root, &sum); } void inorder(Node *root) { if (root != NULL) { inorder(root->left); cout<<root->data<<" "; inorder(root->right); } } Node* insert(Node* node, int data) { if (node == NULL) return getNode(data); if (data <= node->data) //go to left node->left = insert(node->left, data); else //go to right node->right = insert(node->right, data); return node; } int main() { int data[] = {50, 30, 20, 40, 70, 60, 80}; int n = sizeof(data)/sizeof(data[0]); Node *root = NULL; for(int i = 0; i < n; i++) { root = insert(root, data[i]); } BSTUpdate(root); inorder(root); }
出力
350 330 300 260 210 150 80
以上が指定された二分探索ツリー内のより大きな値をすべて各ノードに追加しますの詳細内容です。詳細については、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)

ホットトピック











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

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

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

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

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

Java を使用してバイナリ検索ツリー アルゴリズムを実装する方法 バイナリ検索ツリー (BinarySearchTree、略して BST) は、挿入、削除、検索などの操作を効率的に実装できる一般的に使用されるデータ構造です。この記事では、Java を使用して二分探索ツリーを実装する方法を紹介し、対応するコード例を示します。 1. 二分探索木の定義 二分探索木は、次の特徴を持つ順序付き木です。 各ノードは一意のキー値を持ちます。左側のサブツリーのキー値はノードのキー値より小さく、右側のサブツリーのキー値はノードのキー値より大きくなります。

BST または Binary Search Tree は、すべての左側のノードがルート ノードの値より小さい値を持ち、すべての右側のノードがルート ノードの値より大きい値を持つバイナリ ツリーの形式です。この問題では、バイナリ ツリーを取得し、現在のノード値より大きいすべての値をそれに追加します。 「より大きな値をすべて BST の各ノードに追加する」という問題は、BST の場合、現在のノード値よりも大きなすべてのノード値をそのノード値に追加するように単純化されます。 BST の各ノードにすべてのより大きな値のノードを追加する 問題ステートメント: 二分探索ツリー (BST) が与えられた場合、すべてのより大きな値のノードの合計を各ノードに追加する必要があります。 10 を入力してください /&nb

ここで興味深い問題が発生します。指定された二分探索ツリーの各ノードに、より大きな値を追加します。したがって、最初と最後のツリーは次のようになります。 アルゴリズム bstUpdate(root,sum)-Begin ifrootisnull,thenstop bstUpdate(rightofroom,sum) sum:=sum+valueofroot updaterootvalueus
