Find the Deepest Node in a Binary Tree.

Objective: – Given a binary tree, write an algorithm to Find the deepest node in it.


  • Take two global variable as “deepestlevel” and “value“.
  • starting with level=0, Do the inorder traversal and whenever you go down one level ( root.left OR root.right), increase the level by 1.
  • Keep checking if deepestlevel < level, if yes then update the “deepestlevel ” and “value “.
  • At the end return “value“, which will the deepest node value.
  • See the code for better explanation.



Deepest child is: 8

Top Companies Interview Questions..-

Google Microsoft Amazon Facebook more..

If you find anything incorrect or you feel that there is any better approach to solve the above problem, please write comment.

  • Lance

    When calling for the right child, shouldn’t it be find (root.right, ++level) instead of find(root.right, level)?

    • tutorialhorizon

      If u notice when we are calling find(root.left, ++level) we have already increased the level value. So when we make a call to root.right, it will be called with incremented value. To avoid confusion u can call find (root.left, level+1) and then find(root.right, level+1)

      • Lance

        You’re right. Thanks

        • tutorialhorizon

          You r welcome !

    • Martin

      Agree, this looks a bit confusing. I would rather do find(root.left, level + 1) and find(root.right, level +1)

%d bloggers like this: