input: Write a python function to perform inorder traversal on a binary tree and return the result as a list.
  assert inorder_traversal(root) == [4, 2, 5, 1, 3]
  root2 = Node(10)
  root2.left = Node(5)
  root2.right = Node(20)
  root2.left.left = Node(3)
  root2.left.right = Node(7)
  assert inorder_traversal(root2) == [3, 5, 7, 10, 20]
  root3 = Node(15)
  assert inorder_traversal(root3) == [15]
output: class Node:
      def __init__(self, key):
          self.left = None
          self.right = None
          self.val = key
  
  def inorder_traversal(root):
      result = []
      def helper(node):
          if node:
              helper(node.left)
              result.append(node.val)
              helper(node.right)
      helper(root)
      return result
  
  # Example usage:
  # root = Node(1)
  # root.left = Node(2)
  # root.right = Node(3)
  # root.left.left = Node(4)
  # root.left.right = Node(5)
  # assert inorder_traversal(root) == [4, 2, 5, 1, 3]
  # root2 = Node(10)
  # root2.left = Node(5)
  # root2.right = Node(20)
  # root2.left.left = Node(3)
  # root2.left.right = Node(7)
  # assert inorder_traversal(root2) == [3, 5, 7, 10, 20]
  # root3 = Node(15)
  # assert inorder_traversal(root3) == [15]