input: Write a python function to perform in-order traversal of a binary tree.
  assert inOrderTraversal(TreeNode(1, None, TreeNode(2, TreeNode(3), None))) == [1, 3, 2]
  assert inOrderTraversal(TreeNode(1, TreeNode(2), TreeNode(3, TreeNode(4), TreeNode(5)))) == [2, 1, 4, 3, 5]
  assert inOrderTraversal(TreeNode(1, TreeNode(2, TreeNode(3), TreeNode(4)), TreeNode(5))) == [3, 2, 4, 1, 5]
output: def inOrderTraversal(root):
      def inorder(node, result):
          if node is not None:
              inorder(node.left, result)
              result.append(node.val)
              inorder(node.right, result)
      
      result = []
      inorder(root, result)
      return result
  
  class TreeNode:
      def __init__(self, val=0, left=None, right=None):
          self.val = val
          self.left = left
          self.right = right