input: Write a function to find the maximum depth of a binary tree.
  assert max_depth(None) == 0
  assert max_depth(TreeNode(1)) == 1
  assert max_depth(TreeNode(1, TreeNode(2), TreeNode(3))) == 2
  assert max_depth(TreeNode(1, TreeNode(2, TreeNode(4)), TreeNode(3))) == 3
output: def max_depth(root):
      if not root:
          return 0
      left_depth = max_depth(root.left)
      right_depth = max_depth(root.right)
      return max(left_depth, right_depth) + 1
  
  class TreeNode:
      def __init__(self, val=0, left=None, right=None):
          self.val = val
          self.left = left
          self.right = right