**Objective:** **– **Find The Distance From Root To Given Node of a binary tree.

*What does Distance means :** It means number of edges between two nodes.*

**Approach****:**

- This problem is similar to “
*Find Path From Root To Given Node*“ - Make the following change into that
*Instead of returning the boolean value return the integer, nodes in the path will return the number = 1 + number returned by pervious node in path .**The final return will give you the number of nodes between root and the given leaf node so the distance will be (edges)= number of nodes -1*

**Complete Code:**

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.

Learn more about bidirectional Unicode characters

public class DistanceRootToNode { | |

public int Pathlength(Node root, int n1) { | |

if (root != null) { | |

int x = 0; | |

if ((root.data == n1) || (x = Pathlength(root.left, n1)) > 0 | |

|| (x = Pathlength(root.right, n1)) > 0) { | |

return x + 1; | |

} | |

return 0; | |

} | |

return 0; | |

} | |

public static void main(String[] args) throws java.lang.Exception { | |

Node root = new Node(5); | |

root.left = new Node(10); | |

root.right = new Node(15); | |

root.left.left = new Node(20); | |

root.left.right = new Node(25); | |

root.right.left = new Node(30); | |

root.right.right = new Node(35); | |

root.left.right.right = new Node(45); | |

DistanceRootToNode i = new DistanceRootToNode(); | |

System.out.println("Distance from root to 45 is : " | |

+ (i.Pathlength(root, 45)–1)); | |

} | |

} | |

class Node { | |

int data; | |

Node left; | |

Node right; | |

public Node(int data) { | |

this.data = data; | |

this.left = null; | |

this.right = null; | |

} | |

} |

**Output** :

Distance from root to 45 is : 3