input: Write a python function to find the deepest node in a binary tree.
  assert deepest_node(TreeNode(1, TreeNode(2), TreeNode(3, TreeNode(4), TreeNode(5)))) == 3
  assert deepest_node(TreeNode(1, TreeNode(2, TreeNode(4, TreeNode(6), None), TreeNode(5)), TreeNode(3))) == 4
  assert deepest_node(TreeNode(1, None, TreeNode(2, None, TreeNode(3)))) == 3
output: def deepest_node(root):
      if not root:
          return 0
      
      max_depth = 0
      queue = [(root, 1)]
      
      while queue:
          node, depth = queue.pop(0)
          max_depth = max(max_depth, depth)
          
          if node.left:
              queue.append((node.left, depth + 1))
          if node.right:
              queue.append((node.right, depth + 1))
      
      return max_depth