input: Write a python function to traverse a tree and return a list of all node data in depth-first order.
  assert depth_first_traversal(root) == [0, 1, 3, 4, 2, 5]
  assert depth_first_traversal(node1) == [1, 3, 4]
  assert depth_first_traversal(node2) == [2, 5]
output: def depth_first_traversal(root):
      result = []
      
      def dfs(node):
          if node:
              result.append(node.data)
              dfs(node.left)
              dfs(node.right)
      
      dfs(root)
      return result