C++のBSTからの床と天井
ここでは、BSTから床と天井の値を見つける方法を説明します。たとえば、空きノードがBSTに配置されているメモリ管理システムを作成する場合です。入力リクエストに最適なものを見つけます。キー値よりも大きい最小のデータでツリーを下に移動するとします。3つのケースが考えられます。
- ルートが鍵です。その場合、ルート値は上限値です
- ルートデータ<キーの場合、上限値は左側のサブツリーにないため、右側のサブツリーに進み、問題のあるドメインを減らします
- ルートデータ>キーの場合、上限値は右側のサブツリーにある可能性があり、左側のサブツリーにキーよりも大きいデータを持つノードが見つかる可能性があります。そのような要素が存在しない場合、ルートは上限値です。 >
ツリーが次のようになっているとします-
0、1、2の天井は2、3の天井、4は4など
ここでは、天井関数のみを表示します。これを少し変更すると、床の値を取得できます。
例
#include <iostream> using namespace std; class node { public: int key; node* left; node* right; }; node* getNode(int key) { node* newNode = new node(); newNode->key = key; newNode->left = NULL; newNode->right = NULL; return newNode; } int ceiling(node* root, int num) { if (root == NULL) return -1; if (root->key == num) return root->key; if (root->key < num) return ceiling(root->right, num); int ceil = ceiling(root->left, num); return (ceil >= num) ? ceil : root->key; } int main() { node* root = getNode(8); root->left = getNode(4); root->right = getNode(12); root->left->left = getNode(2); root->left->right = getNode(6); root->right->left = getNode(10); root->right->right = getNode(14); for (int i = 0; i < 16; i++) cout << i << "\tCeiling: " << ceiling(root, i) << endl; }
出力
0 Ceiling: 2 1 Ceiling: 2 2 Ceiling: 2 3 Ceiling: 4 4 Ceiling: 4 5 Ceiling: 6 6 Ceiling: 6 7 Ceiling: 8 8 Ceiling: 8 9 Ceiling: 10 10 Ceiling: 10 11 Ceiling: 12 12 Ceiling: 12 13 Ceiling: 14 14 Ceiling: 14 15 Ceiling: -1
-
C++でのインオーダーおよびポストオーダートラバーサルからのプレオーダー
この問題では、二分木のインオーダートラバーサルとポストオーダートラバーサルが与えられます。私たちのタスクは、ツリーのポストオーダートラバーサルを印刷することです。 問題を理解するために例を見てみましょう Input:inorder: 16 7 21 12 1 5 9 postorder: 16 21 7 1 9 5 12 Output: preorder: 12 7 16 21 5 1 9 Explanation: the binary tree is : この問題を解決するための簡単な解決策は、指定されたトラバーサルを使用してツリーを作成し、ツリーのプレオーダートラバーサルを見つけ
-
floor()およびceil()関数Python
これらの2つのメソッドは、小数の最も近い整数値を取得するのに役立つpython数学モジュールの一部です。 floor() パラメータとして10進数の数値を受け入れ、数値自体よりも小さい整数を返します。 構文 Syntax: floor(x) Where x is a numeric value floor()の例 以下の例では、整数、正の小数、負の小数などのさまざまなタイプの数値を取得し、それらにfloor関数を適用します。提供された数値よりも小さい最も近い整数を取得します。 import math x,y,z = 21 , -23.6 , 14.2 print("The v