- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Minimum no. of iterations to pass information to all nodes in the tree in C++

We are given a tree data structure with ‘n’ number of nodes. The given tree will have a root node and respective children which can be any number and further child can have any number of children. The task is to find the minimum number of iterations required by a root node of a tree to pass the information to all nodes in a tree. At a time, a node can pass information to one of its children and further one of its children can pass information to one of its children and meanwhile root node can pass information to another child.

Let us see various input output scenarios for this -

**In −**

**Out −**Minimum no. of iterations to pass information to all nodes in the tree are: 5

**Explanation −**We are given a tree with a total of 11 nodes including root and all other nodes. The root node of a given tree is 0 which will firstly pass the data to the node 1 as it has many children then other nodes, then root node will pass data to node 4, then it will pass data to 3, then it will pass data to 6 and at last it will pass data to 2. So, in total the iterations required are 5.

**In −**

**Out −** Minimum no. of iterations to pass information to all nodes in the tree are: 1

**Explanation −**: We are given a tree with a total of 2 nodes including root and all other nodes. Since there is only one child of a root node in a given tree so the minimum number of iterations required will be 1.

## Approach used in the below program is as follows −

Create a class to construct the tree and add nodes as its data member and create a list pointer as List_children and declare a private method as void Iteration(int vertices, int arr[]). Declare a parameterised constructor as Tree(int nodes), void insert_node(int a, int b), int Min_Iteration() and static int check(const void *a_1, const void *b_1).

Call an external parameterized constructor as Tree::Tree(int nodes)

Set this->nodes to nodes.

Set List_children to new list[nodes]

Call a class method as void Tree::insert_node(int a, int b)

Set List_children[a] to push_back(b)

Call a class method as void Tree::Iteration(int vertices, int arr[])

Set arr[vertices] to List_children[vertices].size()

Set *ptr to new int[arr[vertices]]

Set temp to 0 and temp_2 to 0

Declare an iterator as list::iterator it

Start loop FOR from it to List_children[vertices].begin() till it does not equals to List_children[vertices].end() and pre increment it. Inside the loop set Iteration(*it, arr) and set ptr[temp++] to arr[*it]

Call qsort(ptr, arr[vertices], sizeof(int), check) for quick sort

Start Loop FOR temp to 0 and temp less than List_children[vertices].size() and post increment temp. Inside the loop, set temp_2 to ptr[temp] + temp + 1 and arr[vertices] to max(arr[vertices], temp_2) and delete[] ptr

Call a class method as int Tree::Min_Iteration()

Declare a pointer as int *ptr = new int[nodes]

Declare a variable as int temp = -1

Start loop FOR from i to 0 till i < nodes and i++. Inside the loop, set ptr[i] to 0

Call Iteration(0, ptr) and set temp to ptr[0] and delete[] ptr

return temp

Call a class method as int Tree::check(const void * a_1, const void * b_1)

Declare a variable as int result to ( *(int*)b_1 - *(int*)a_1 )

return result

In the main() function

Create a tree object using a parameterized constructor.

Then using the object of a tree class call the insert_node() method to insert the node data to the tree

Call Min_Iteration() method to calculate the minimum number of iterations to pass information to all nodes in the tree

## Example

#include<bits/stdc++.h> using namespace std; class Tree { int nodes; list<int> *List_children; void Iteration(int vertices, int arr[]); public: //constructor of a class Tree(int nodes); //method to insert a node in a tree void insert_node(int a, int b); //method to calculate the minimum iterations int Min_Iteration(); static int check(const void *a_1, const void *b_1); }; Tree::Tree(int nodes) { this->nodes = nodes; List_children = new list<int>[nodes]; } void Tree::insert_node(int a, int b) { List_children[a].push_back(b); } void Tree::Iteration(int vertices, int arr[]) { arr[vertices] = List_children[vertices].size(); int *ptr = new int[arr[vertices]]; int temp = 0; int temp_2 = 0; list<int>::iterator it; for(it = List_children[vertices].begin(); it!= List_children[vertices].end(); ++it) { Iteration(*it, arr); ptr[temp++] = arr[*it]; } qsort(ptr, arr[vertices], sizeof(int), check); for(temp = 0; temp < List_children[vertices].size(); temp++) { temp_2 = ptr[temp] + temp + 1; arr[vertices] = max(arr[vertices], temp_2); } delete[] ptr; } int Tree::Min_Iteration() { int *ptr = new int[nodes]; int temp = -1; for (int i = 0; i < nodes; i++) { ptr[i] = 0; } Iteration(0, ptr); temp = ptr[0]; delete[] ptr; return temp; } int Tree::check(const void * a_1, const void * b_1) { } int main() { Tree T_1(8); T_1.insert_node(0, 1); T_1.insert_node(0, 3); T_1.insert_node(0, 4); T_1.insert_node(0, 6); T_1.insert_node(0, 2); T_1.insert_node(1, 7); T_1.insert_node(1, 2); T_1.insert_node(1, 3); T_1.insert_node(4, 6); T_1.insert_node(4, 7); cout<<"Minimum no. of iterations to pass information to all nodes in the tree are:"<<T_1.Min_Iteration(); Tree T_2(2); T_2.insert_node(0, 1); cout<<"

Minimum no. of iterations to pass information to all nodes in the tree are:" <<T_1.Min_Iteration(); return 0; }

## Output

If we run the above code it will generate the following Output

Minimum no. of iterations to pass information to all nodes in the tree are: 8 Minimum no. of iterations to pass information to all nodes in the tree are: 8

- Related Questions & Answers
- Python Program to Find the Sum of all Nodes in a Tree
- Python Program to Find the Sum of All Nodes in a Binary Tree
- Product of all leaf nodes of binary tree in C++
- Product of all nodes in a Binary Tree in C++
- XOR of all the nodes in the sub-tree of the given node in C++
- Print all odd nodes of Binary Search Tree in C++
- Print all internal nodes of a Binary tree in C++
- Print all even nodes of Binary Search Tree in C++
- Find sum of all nodes of the given perfect binary tree in C++
- All Nodes Distance K in Binary Tree in C++
- Program to find minimum number of vertices to reach all nodes using Python
- Maximum sum of nodes in Binary tree such that no two are adjacent in C++
- Print all leaf nodes of a binary tree from right to left in C++
- Print Levels of all nodes in a Binary Tree in C++ Programming.
- Minimum Time to Collect All Apples in a Tree in C++