Computer >> Máy Tính >  >> Lập trình >> C ++

Tích của tất cả các nút trong Cây nhị phân trong C ++


Được đưa ra với một cây nhị phân chứa các nút và nhiệm vụ là tìm tích của tất cả các nút của một cây nhị phân đã cho.

Trong cây nhị phân, có một nút gốc là nút chính của tất cả các nút trong cây. Một nút chứa phần dữ liệu, con trỏ bên trái sẽ tạo thêm thư mục con bên trái và con trỏ bên phải sẽ giúp tạo thư mục con bên phải. Vì vậy, để duyệt qua cây, chúng ta có thể lấy một con trỏ tạm thời kết hợp với con trỏ trái để duyệt qua thư mục con bên trái hoặc con trỏ phải để duyệt qua thư mục con bên phải.

Đầu vào

Tích của tất cả các nút trong Cây nhị phân trong C ++

Đầu ra

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

Phương pháp tiếp cận

  • Nhập dữ liệu nút

  • Duyệt qua tất cả các nút bắt đầu từ nút gốc và chuyển đến thư mục con bên trái hoặc thư mục con bên phải để duyệt.

  • Lưu trữ dữ liệu các nút và tiếp tục nhân dữ liệu đã lưu với dữ liệu mới

  • In giá trị của một biến tạm thời chứa các giá trị được nhân.

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Product of all the nodes is: 720000000