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

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

Sep 16, 2023 pm 08:45 PM
二分探索木 大きい値 ノードが追加されました

ここで興味深い問題がわかります。指定された二分探索ツリーの各ノードに、より大きな値を追加します。最初と最後のツリーは次のようになります -

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

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

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

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

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 ヒープの順序付け ヒープの順序付けとは、バイナリ ヒープ内で各ノードの値が次の値を超えない (または下回らない) ことを意味します。親ノードの値。ここでは例として最大ヒープを取り上げます。つまり、ルート ノードの値がツリー全体の最大値であり、

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

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

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 つの整数を受け入れます。

Javaを使用して二分探索木アルゴリズムを実装する方法 Javaを使用して二分探索木アルゴリズムを実装する方法 Sep 19, 2023 am 08:48 AM

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

指定された二分探索ツリー内のすべてのより大きな値を各ノードに追加します 指定された二分探索ツリー内のすべてのより大きな値を各ノードに追加します Sep 07, 2023 pm 12:17 PM

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

指定された二分探索ツリー内のより大きな値をすべて各ノードに追加します 指定された二分探索ツリー内のより大きな値をすべて各ノードに追加します Sep 16, 2023 pm 08:45 PM

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

See all articles