# DFS on a Tree

I just have a doubt. Can we use DFS to find the shortest path between two nodes in a tree?
If yes, then how should we tweak the DFS to achieve the desired result?

1 Like

there are other algo also djsitra and bellmon ford

But I don’t want to use them (at least now). If it can be done with DFS (if possible) then I will be happy using DFS. I am just curious whether it can be done using DFS, I know that there are other algorithms as well.

You certainly can not find shortest path using DFS, there will be some modifications in the code and that will ultimately become BFS instead.

let dist[u][v] be the distance between two nodes u & v, r be the root of the tree from where you are starting the dfs & l be the least common ancestor of u and v so we can write that
dist[u][v]=dist[u][r]+dist[v][r]-2dist[l][r]
you can find dist[u][r] for all nodes by doing a simple dfs, please tell if something seems wrong

A dfs won’t get you the shortest path unless you use binary lifting, you have to use a bfs. Which will still be O(n).
If you want to calculate it quickly using binary lifting, find the depth of the 2 nodes, and subtract the depth of it’s LCA twice, which can be found in O(log n)
Binary lifting

1 Like

Thanks to everyone for helping me. FCTRE flasbacks