노드를 포함하는 이진 트리가 주어지면 주어진 이진 트리의 모든 노드의 곱을 찾는 것이 작업입니다.
이진 트리에는 트리에 있는 모든 노드의 마스터 노드인 루트 노드가 있습니다. 노드에는 데이터 부분, 왼쪽 하위 디렉터리를 추가로 생성하는 왼쪽 포인터 및 오른쪽 하위 디렉터리 생성에 도움이 되는 오른쪽 포인터가 포함됩니다. 따라서 트리를 탐색하기 위해 왼쪽 하위 디렉토리를 탐색하기 위한 왼쪽 포인터 또는 오른쪽 하위 디렉토리를 탐색하기 위한 오른쪽 포인터와 연관될 임시 포인터를 사용할 수 있습니다.
입력
출력
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