#include #include struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} }; std::string treenode_to_str(TreeNode *root) { if ( root == NULL ) { return "nil"; } std::string ret; ret += "TreeNode("; ret += std::to_string(root->val); ret += ", "; ret += treenode_to_str(root->left); ret += ", "; ret += treenode_to_str(root->right); ret += ")"; return ret; } template std::string vector_to_str(std::vector vec) { std::string ret = "["; for ( unsigned long i = 0; i < vec.size(); ++i ) { if ( i == 0 ) { ret += "\""; ret += std::to_string(vec[i]); ret += "\""; continue; } ret += ", \""; ret += std::to_string(vec[i]); ret += "\""; } ret += "]"; return ret; }