Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลิตภัณฑ์ของโหนดทั้งหมดใน Binary Tree ใน C++


ให้ด้วยไบนารีทรีที่มีโหนด และภารกิจคือการค้นหาผลคูณของโหนดทั้งหมดของไบนารีทรีที่กำหนด

ในไบนารีทรี จะมีโหนดรูทซึ่งเป็นโหนดหลักของโหนดทั้งหมดในทรี โหนดประกอบด้วยส่วนข้อมูล ตัวชี้ด้านซ้าย ซึ่งจะสร้างไดเรกทอรีย่อยด้านซ้ายและตัวชี้ด้านขวา ซึ่งจะช่วยในการสร้างไดเรกทอรีย่อยที่ถูกต้อง เพื่อสำรวจต้นไม้ เราสามารถใช้ตัวชี้ชั่วคราวที่จะเชื่อมโยงกับตัวชี้ด้านซ้ายเพื่อสำรวจไดเรกทอรีย่อยด้านซ้ายหรือตัวชี้ขวาเพื่อสำรวจไดเรกทอรีย่อยด้านขวา

ป้อนข้อมูล

ผลิตภัณฑ์ของโหนดทั้งหมดใน Binary Tree ใน 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