public static IList <string> BinaryTreePaths(LeetCode257TreeNode root)
        {
            var paths = new List <string> ();

            PreOrder(root, "", paths);
            return(paths);
        }
 private static void PreOrder(LeetCode257TreeNode root, string path, List <string> paths)
 {
     if (root == null)
     {
         return;
     }
     path += root.val.ToString();
     if (root.IsLeaftNode())
     {
         paths.Add(path);
     }
     else
     {
         path += "->";
         PreOrder(root.left, path, paths);
         PreOrder(root.right, path, paths);
     }
 }
 public LeetCode257TreeNode(int val = 0, LeetCode257TreeNode left = null, LeetCode257TreeNode right = null)
 {
     this.val   = val;
     this.left  = left;
     this.right = right;
 }