C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++のバイナリツリー内のすべてのノードの積


ノードを含む二分木が与えられ、タスクは、与えられた二分木のすべてのノードの積を見つけることです。

二分木には、ツリー内のすべてのノードのマスターノードであるルートノードがあります。ノードには、データ部分、左側のサブディレクトリをさらに作成する左側のポインタ、および右側のサブディレクトリの作成に役立つ右側のポインタが含まれています。したがって、ツリーをトラバースするには、左のサブディレクトリをトラバースするための左のポインタまたは右のサブディレクトリをトラバースするための右のポインタに関連付けられる一時的なポインタを使用できます。

入力

C++のバイナリツリー内のすべてのノードの積

出力

Nodes are-: 10, 20, 30, 40, 50, 60
Product = 10*20*30*40*50*60 = 72,00,00,000

アプローチ

  • ノードデータを入力する

  • ルートノードから開始して、トラバースのために左側のサブディレクトリまたは右側のサブディレクトリに移動するすべてのノードをトラバースします。

  • ノードデータを保存し、保存されたデータに新しいデータを掛け続けます

  • 乗算された値を保持する一時変数の値を出力します。

アルゴリズム

Start
Step 1 → create structure of a node
   structure node
      struct node
         int data
         Create node *left, *right
End
Step 2 → declare function to insert a node in a tree
   node* new_node(int data)
      Set node* temp = new node()
      Set temp→data = data
      Set temp→left = temp→right = NULL
      return temp
End
Step 3 → Declare a function to multiply all the nodes
   void leaf(node* root, int &product)
      IF root = NULL
         return 1
      End
      return (root→data * node_product(root→left) *
         node_product(root→right))
Step 4 → In main()
   Create node* root = new_node(10)
   Set root→left = new_node(20)
   Set root→left→left = new_node(30)
   Set int product = node_product(root)
   Display product
Stop

#include <iostream>
using namespace std;
//structure of a node
struct node{
   int data;
   node *left, *right;
};
//function for inserting a new node
node* new_node(int data){
   node* temp = new node();
   temp→data = data;
   temp→left = temp→right = NULL;
   return temp;
}
//function for multiplying all the nodes
int node_product(node* root){
   if (root == NULL)
      return 1;
   return (root→data * node_product(root→left) * node_product(root→right));
}
int main(){
   node* root = new_node(10);
   root→left = new_node(20);
   root→right = new_node(30);
   root→left→left = new_node(40);
   root→left→right = new_node(50);
   root→right→left = new_node(60);
   int product = node_product(root);
   cout << "Product of all the nodes is: "<<product<< endl;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Product of all the nodes is: 720000000

  1. C++で与えられた完全な二分木のすべてのノードの合計を見つけます

    完全な二分木のレベル数を表す正の整数Lがあるとします。この完全な二分木のリーフノードには、1からnまでの番号が付けられています。ここで、nはリーフノードの数です。親ノードは子の合計です。私たちの仕事は、この完璧な二分木のすべてのノードの合計を出力するプログラムを書くことです。したがって、ツリーが以下のようになっている場合- したがって、合計は30です。 よく見ると、すべてのノードの合計を見つける必要があります。リーフノードは1からnまでの値を保持しているため、式n(n + 1)/2を使用してリーフノードの合計を取得できます。これは完全な二分木であるため、各レベルの合計は同じになります

  2. C++プログラミングのバイナリツリー内のすべてのノードの印刷レベル。

    二分木が与えられた場合、タスクは、1からnまでのノードに格納されているすべてのキーに関連付けられたレベルを出力することです 上記のツリーでは、ノードは- 10 at level 1 3 and 211 at level 2 140, 162, 100 and 146 at level 3 キーが与えられると、プログラムはその特定のキーのレベルを出力する必要があります。 例 Input: 10 3 211 140 162 100 146 Output:    level of 10 is 1    Level of 3 is 2   &