# Total nodes traversed in Euler Tour Tree

• Difficulty Level : Easy
• Last Updated : 23 Jun, 2021

Euler tour of tree has been already discussed which flattens the hierarchical structure of tree into array which contains exactly 2*N-1 values. In this post, the task is to prove that the degree of Euler Tour Tree is 2 times the number of nodes minus one. Here degree means the total number of nodes get traversed in Euler Tour.
Examples:

Input:

Output: 15
Input:

Output: 17

Explanation:
Using Example 1:

where

It can be seen that each node’s count in Euler Tour is exactly equal to the out-degree of node plus 1.
Mathematically, it can be represented as:

Where
Total represents total number of nodes in Euler Tour Tree
represents ith node in given Tree
N represents the total number of node in given Tree
represents number of child of

## C++

 // C++ program to check the number of nodes// in Euler Tour tree.#include using namespace std; #define MAX 1001 // Adjacency list representation of treevector<int> adj[MAX]; // Function to add edges to treevoid add_edge(int u, int v){    adj[u].push_back(v);} // Program to check if calculated Value is// equal to 2*size-1void checkTotalNumberofNodes(int actualAnswer,                              int size){    int calculatedAnswer = size;     // Add out-degree of each node    for (int i = 1; i <= size; i++)        calculatedAnswer += adj[i].size();     if (actualAnswer == calculatedAnswer)        cout << "Calculated Answer is " << calculatedAnswer                     << " and is Equal to Actual Answer\n";    else        cout << "Calculated Answer is Incorrect\n";}int main(){ // Constructing 1st tree from example    int N = 8;    add_edge(1, 2);    add_edge(1, 3);    add_edge(2, 4);    add_edge(2, 5);    add_edge(3, 6);    add_edge(3, 7);    add_edge(6, 8);     // Out_deg[node[i]] is equal to adj[i].size()    checkTotalNumberofNodes(2 * N - 1, N);     // clear previous stored tree    for (int i = 1; i <= N; i++)        adj[i].clear();     // Constructing 2nd tree from example    N = 9;    add_edge(1, 2);    add_edge(1, 3);    add_edge(2, 4);    add_edge(2, 5);    add_edge(2, 6);    add_edge(3, 9);    add_edge(5, 7);    add_edge(5, 8);     // Out_deg[node[i]] is equal to adj[i].size()    checkTotalNumberofNodes(2 * N - 1, N);     return 0;}

## Java

 // Java program to check the number of nodes// in Euler Tour tree.import java.util.*; class GFG{    static final int MAX = 1001;     // Adjacency list representation of tree    static Vector[] adj = new Vector[MAX];     // Function to add edges to tree    static void add_edge(int u, int v)    {        adj[u].add(v);    }     // Program to check if calculated Value is    // equal to 2*size-1    static void checkTotalNumberofNodes(int actualAnswer,                                        int size)    {        int calculatedAnswer = size;         // Add out-degree of each node        for (int i = 1; i <= size; i++)            calculatedAnswer += adj[i].size();         if (actualAnswer == calculatedAnswer)            System.out.print("Calculated Answer is " +                                    calculatedAnswer +                  " and is Equal to Actual Answer\n");        else            System.out.print("Calculated Answer is Incorrect\n");    }     // Driver Code    public static void main(String[] args)    {        for (int i = 0; i < MAX; i++)            adj[i] = new Vector();                     // Constructing 1st tree from example        int N = 8;        add_edge(1, 2);        add_edge(1, 3);        add_edge(2, 4);        add_edge(2, 5);        add_edge(3, 6);        add_edge(3, 7);        add_edge(6, 8);         // Out_deg[node[i]] is equal to adj[i].size()        checkTotalNumberofNodes(2 * N - 1, N);         // clear previous stored tree        for (int i = 1; i <= N; i++)            adj[i].clear();         // Constructing 2nd tree from example        N = 9;        add_edge(1, 2);        add_edge(1, 3);        add_edge(2, 4);        add_edge(2, 5);        add_edge(2, 6);        add_edge(3, 9);        add_edge(5, 7);        add_edge(5, 8);         // Out_deg[node[i]] is equal to adj[i].size()        checkTotalNumberofNodes(2 * N - 1, N);    }} // This code is contributed by Rajput-Ji

## C#

 // C# program to check the number// of nodes in Euler Tour tree.using System;using System.Collections.Generic; class GFG{    static readonly int MAX = 1001;     // Adjacency list representation of tree    static List<int>[] adj = new List<int>[MAX];     // Function to add edges to tree    static void add_edge(int u, int v)    {        adj[u].Add(v);    }     // Program to check if calculated Value is    // equal to 2*size-1    static void checkTotalNumberofNodes(int actualAnswer,                                        int size)    {        int calculatedAnswer = size;         // Add out-degree of each node        for (int i = 1; i <= size; i++)            calculatedAnswer += adj[i].Count;         if (actualAnswer == calculatedAnswer)            Console.Write("Calculated Answer is " +                                 calculatedAnswer +               " and is Equal to Actual Answer\n");        else            Console.Write("Calculated Answer " +                              "is Incorrect\n");    }     // Driver Code    public static void Main(String[] args)    {        for (int i = 0; i < MAX; i++)            adj[i] = new List<int>();                     // Constructing 1st tree from example        int N = 8;        add_edge(1, 2);        add_edge(1, 3);        add_edge(2, 4);        add_edge(2, 5);        add_edge(3, 6);        add_edge(3, 7);        add_edge(6, 8);         // Out_deg[node[i]] is equal to adj[i].Count        checkTotalNumberofNodes(2 * N - 1, N);         // clear previous stored tree        for (int i = 1; i <= N; i++)            adj[i].Clear();         // Constructing 2nd tree from example        N = 9;        add_edge(1, 2);        add_edge(1, 3);        add_edge(2, 4);        add_edge(2, 5);        add_edge(2, 6);        add_edge(3, 9);        add_edge(5, 7);        add_edge(5, 8);         // Out_deg[node[i]] is equal to adj[i].Count        checkTotalNumberofNodes(2 * N - 1, N);    }} // This code is contributed by PrinciRaj1992

## Javascript

 

Output:

Calculated Answer is 15 and is Equal to Actual Answer
Calculated Answer is 17 and is Equal to Actual Answer

My Personal Notes arrow_drop_up