Graph Traversal using DFS is an obvious way to traverse a tree with recursion. Below is an algorithm for traversing binary tree using DFS.
Prerequisites
Algorithm
- Initialize the current node as root node and the parent as -1.
- Traverse the Binary Tree as the in the general DFS fashion and keep of increasing the level of the node as we traverse farther from the root node.
- While traversing we check if the level of the current node of the binary tree is even then add in even sum else add in odd sum.
- Finally, print the Absolute difference of the of even sum and the odd sum.
Example
Java
import java.util.*; public class GFG { // global variable declaration static ArrayList<ArrayList<Integer> > arr; static int val[]; static int sum_odd = 0 , sum_even = 0 ; // traverses the binary-tree/tree having parameters u, // par, level which denotes current node, current's // parent node, current level of the tree. static void dfs( int u, int par, int level) { // according to level adding the node if (level % 2 == 0 ) sum_even += val[u]; else sum_odd += val[u]; // exploring the child of the particular node u (2 // in case of binary tree). for ( int v : arr.get(u)) { if (v != par) { // recursively calling the current child // node to become parent of the next dfs // call. dfs(v, u, level + 1 ); } } } public static void main(String args[]) { Scanner in = new Scanner(System.in); int n = 5 ; val = new int [] { 0 , 2 , 10 , 5 , 3 , 2 }; // declaration of the ArrayList size arr = new ArrayList<>(); // initialization of each array element as ArrayList // class for ( int i = 0 ; i <= n; i++) arr.add( new ArrayList<>()); arr.get( 1 ).add( 2 ); arr.get( 2 ).add( 1 ); arr.get( 1 ).add( 4 ); arr.get( 4 ).add( 1 ); arr.get( 2 ).add( 5 ); arr.get( 5 ).add( 2 ); arr.get( 3 ).add( 4 ); arr.get( 4 ).add( 3 ); // 1(2) // / \ // 2(10) 4(3) // / / // 5(2) 3(5) // initial call of recursion dfs( 1 , - 1 , 0 ); System.out.println( "Absolute difference of sum of odd and even nodes of a binary tree " + Math.abs(sum_odd - sum_even)); } } |
Absolute difference of sum of odd and even nodes of a binary tree 4
Time Complexity: O(V + E) where V is the vertices and E is the edges.