-
C++で指定された順序トラバーサルから特別な二分木を構築します
二分木の順序通りの走査を含む配列arr[]が与えられます。目標は、その配列から特別な二分木を構築することです。特別な二分木とは、ルートノードの重みが左右両方の子の重みよりも大きいものです。 例 入力 int arr[] = {10, 20, 28, 40, 32, 31, 30} 出力 与えられた順序トラバーサルで構築される特別な二分木を以下に示します- 説明 we are given with an array of integer values or the inorder traversal of a tree. So, the special tree formed is
-
C++の二分木に存在する二分探索木の数を数える
入力として二分木が与えられます。目標は、その中にサブツリーとして存在する二分探索木(BST)の数を見つけることです。 BSTは、左の子がルートより小さく、右の子がルートよりも大きい二分木です。 例 入力 値を入力した後に作成されるツリーを以下に示します- 出力 Count the Number of Binary Search Trees present in a Binary Tree are: 2 説明 二分木を形成するために使用される整数値の配列が与えられ、そこに二分探索木が存在するかどうかを確認します。すべてのルートノードは二分探索木を表すため、特定の二分木には他の二分探
-
C ++で2つのトラバーサルと1つのトラバーサルを使用して、配列から要素を削除しますか?
2つのトラバーサル まず、元の配列と、検索して配列から削除する要素を定義しましょう- int ele = 5; int arr = [1,2,3,4]; 次に、配列をループして、指定された要素を見つけます- for (i=0; i<length; i++) if (arr[i] == ele) break; 指定された要素の位置が見つかった場合、見つかった要素の右側にある要素を左にシフトします- if (i < length) { length--; for (int j=i; j&
-
C ++で指定されたインデックス範囲[L– R]の配列要素を削除しますか?
まず、元の配列と配列要素を削除するための排他的な範囲を定義し、元の配列の長さ-を見つけましょう。 int arr[] = { 2,4,6,8,10,12,14,16,18,20}; int L = 2, R = 6; int length = sizeof(arr) / sizeof(arr[0]); ここで、配列をループし、インデックス位置(i)がLまたはRより大きい場合、インデックス値(i)が範囲LとRの間にある場合、配列要素の位置をシフト(削除)するために使用される変数kをインクリメントします。 R.また、指定された配列の新しい長さはkになります。 int k = 0; for (in
-
C ++でxとして値を持つリーフノードを削除しますか?
まず、データとその左右のノードの子を含むツリーノードを表す構造体を定義しましょう。これが最初に作成されるノードの場合はルートノード、それ以外の場合は子ノードです。 struct Node { int data; struct Node *leftChild, *rightChild; }; 次に、int値を取得してノードのデータメンバーに割り当てるnewNode(int data)関数を作成します。この関数は、作成された構造体ノードへのポインターを返します。また、新しく作成されたノードの左右の子はnullに設定されます。 struct No
-
C ++で値kのリーフノードを削除しますか?
まず、データとその左右のノードの子を含むツリーノードを表す構造体を定義しましょう。これが最初に作成されるノードの場合はルートノード、それ以外の場合は子ノードです。 struct Node { int data; struct Node *leftChild, *rightChild; }; 次に、int値を取得してノードのデータメンバーに割り当てるnewNode(int data)関数を作成します。この関数は、作成された構造体ノードへのポインターを返します。また、新しく作成されたノードの左右の子はnullに設定されます。 struct No
-
C ++でリンクリストの途中を削除しますか?
まず、データと次のノードへのポインタを含むリンクリストを定義しましょう。 struct Node { int data; struct Node* next; }; 次に、intデータをパラメーターとして受け取り、パラメーター値を割り当てた後に新しく作成されたノードを返すcreateNode(int data)関数を作成します。ノードへの次のポインタはnullになります。 Node* createNode(int data){ struct Node* newNode = new Node; &nbs
-
C ++のリンクリストのMノードの後にNノードを削除しますか?
まず、データと次のノードへのポインタを含むリンクリストを定義しましょう。 struct Node { int data; struct Node* next; }; 次に、createList(Node ** headPtr、int new_data)関数を作成します。この関数は、ノードへのdoublePointerとint値を取ります。関数内で、新しく作成されたノードの次のポインターをheadptrに割り当て、次にheadptrを新しく作成されたノードに割り当てます。 void createList(Node ** headPtr, in
-
C ++でdeleteキーワードを使用してバイナリツリーを削除しますか?
まず、intデータを含むクラスbtree_node * rightChild、btree_node*leftChildを使用してバイナリツリーを定義しましょう。 leftChildとrightChildは、btree_nodeへのポインターです。クラスのメンバーは全員公開されています。 class btree_node { public: int data; btree_node* leftChild; btree_node* rightChi
-
バイナリ文字列の「01」または「10」を削除して、C ++の「01」または「10」から解放しますか?
最初に最初の文字列を宣言してその長さを計算し、それらをdeleteSubstr(str、length)関数に渡します。 string str = "01010110011"; int length = str.length(); cout <<"Count of substring deletion"<< deleteSubstr(str, length); deleteSubstr(string str、int length)関数内で、forループは、Iがlength未満になるまで実行され、0と1が検出されると、それぞれcou
-
C ++のDemlo番号(11 ... 1の平方)」?
デムロ数は、数が10桁未満の場合に、フォーム11.1の数の2乗によって生成される回文数です。 最初に文字列変数を宣言しましょう- string demNum = "1111"; string square = ""; ここで、demNum文字列の長さまでループします。ループ内で、インデックス値 iを変換します 文字列を作成し、それを正方形の変数に追加します。 for(int i=1 ;i<=demNum.length();i++){ square += char(i+'0'); } 2番目のループ
-
C ++の正七角形の対角線?
対角線の長さを見つけるために、辺の値を2 * side * sin(900/14)に入れます。 sinの値(900/14)=0.9。 例 次の実装を見て、正多角形の対角線を横から取得します- #include <iostream> using namespace std; int main(){ float side = 12; if (side < 0) return -1; float diagonal = 2*side*0.9; &nb
-
C ++のバイナリツリーでの削除?
削除は、削除されたモードを一番下の右端のノードに置き換えることによって実行されます。 まず、データとその左右のノードの子を含むツリーノードを表す構造体を定義しましょう。これが最初に作成されるノードの場合はルートノード、それ以外の場合は子ノードです。 struct Node { int data; struct Node *leftChild, *rightChild; }; 次に、int値を取得してノードのデータメンバーに割り当てるnewNode(int data)関数を作成します。この関数は、作成された構造体ノードへのポインターを返しま
-
C ++の1つのトラバーサルにおける二分木の密度?
二分木の密度は、そのサイズを高さで割って計算されます。二分木の密度=サイズ/高さ。 まず、データとその左右のノードの子を含むツリーノードを表す構造体を定義しましょう。これが最初に作成されるノードの場合はルートノード、それ以外の場合は子ノードです。 struct Node { int data; struct Node *leftChild, *rightChild; }; 次に、int値を取得してノードのデータメンバーに割り当てるcreateNode(int data)関数を作成します。この関数は、作成された構造体ノードへのポインターを返
-
C ++のN-Aryツリーの深さ?
まず、文字キーとノード*のベクトルを含むツリーノードを表す構造体を定義しましょう。 struct Node{ char key; vector<Node *> children; }; 次に、intキー値を取得してノードのキーメンバーに割り当てるcreateNode(int key)関数を作成します。この関数は、作成された構造体ノードへのポインタを返します。 Node *createNode(int key){ Node *node = new Node; node->k
-
C ++のバイナリツリーで最も深い奇数レベルのノードの深さ?
まず、intキーとその左右のノードの子を含むツリーノードを表す構造体を定義しましょう。これが最初に作成されるノードの場合はルートノード、それ以外の場合は子ノードです。 struct Node { int data; struct Node *leftChild, *rightChild; }; 次に、intキー値を取得してノードのキーメンバーに割り当てるcreateNode(int key)関数を作成します。この関数は、作成された構造体ノードへのポインターを返します。また、新しく作成されたノードの左右の子はnullに設定されます。 Node
-
C ++の例を含むDisarium番号?
それぞれの位置で累乗された桁の合計がその数自体と等しい数は、ディサリウム数と呼ばれます。 noOfDigits(int num)関数は、数値を取得し、残りの桁が1つしかないときに、数値を常に10で除算することにより、桁数を返します。反復ごとに、数字変数は数字を追跡するためにインクリメントされ、whileループが終了すると返されます。 int noOfDigits(int num){ int digits = 0; int temp = num; while (temp){
-
C ++の行列式?
行列式は、正方行列の場合にのみ、最初の行の補因子に対応する補因子の行列式を掛け、それらに代替の符号を追加して最終結果を得ることができます。 $$ A =\ begin {bmatrix} a&b&c \\ d&e&f \\ g&h&i \\ \ end {bmatrix} | A | =a(ei-fh)-b(di-gf)+ c(dh-eg)$$ 最初に、行列と行列の次元値を取得するdeterminantOfMatrix(int mat [N] [N]、intdimension)関数があります。行列が1次元しかない場合は、[0][0]行列値を返します。この条件は、各再帰呼び出しの次元を減ら
-
C ++で線が通過する単位面積の平方数を決定しますか?
目的は、2つの端点(x1、y1)と(x2、y2)を指定して、線が通過する平方の数を決定することです。 ラインが通過する平方の数を見つけるには、次を見つける必要があります。xポイント間の差(dx)=x2-x1、yポイント間の差(dy)=y2-y1、dxとdyを加算し、それらのgcd(結果)=dx + dy – gcd(dx、dy)。 unitSquares(int x1、int y1、int x2、int y2)関数は、4つの値x1、y1およびx2、y2を取ります。 x2とx1の絶対差、およびy2とy1の絶対差が計算されます。 dxとdyは、dx、dyのgcdに加算および減算されます。結果は
-
C ++の正多角形上の3人目の位置を決定しますか?
N面のポリゴンで、2人の子供がAとBの頂点に立っている場合、その人がAとBの両方に到達するために必要なジャンプの最小数が存在するように、別の人が立つべき頂点番号を決定する必要があります。 ここで注意すべき2つの条件は、ポリゴンの頂点に時計回りに番号が付けられていることです。複数の回答がある場合は、常に最も小さい番号の頂点を選択します。 verticalPosition(intsides、intvertexA、intvertexB)はnoを取ります。ポリゴンの辺の数と頂点AおよびBの位置。forループは1から始まり、iが辺の数以下になるまで繰り返されます。 iがvertexAとvertexB