genTree :: Arbitrary a => Gen (Tree a)
genTree = do
  x <- arbitrary
  t1 <- genTree
  t2 <- genTree
  frequency [ (1, return Empty)
            , (2, return $ Leaf x)
            , (2, return $ Node t1 x t2)
            ]
genTree :: Arbitrary a => Gen (Tree a)
genTree = do
  x <- arbitrary
  t1 <- genTree
  t2 <- genTree
  frequency [ (1, return Empty)
            , (2, return $ Leaf x)
            , (2, return $ Node t1 x t2)
            ]
genTree = do
  x <- arbitrary
  t1 <- genTree
  t2 <- genTree
  frequency [ (1, return Empty)
            , (2, return $ Leaf x)
            , (2, return $ Node t1 x t2)
            ]