struct TreeNode *newNode(int item) { struct TreeNode *node = (struct TreeNode *)malloc(sizeof(struct TreeNode)); node->val = item; node->left = node->right = NULL; return node; } struct TreeNode *mergeTrees(struct TreeNode *t1, struct TreeNode *t2) { if (t1 == NULL && t2 == NULL) return NULL; int item = (t1 == NULL ? 0 : t1->val) + (t2 == NULL ? 0 : t2->val); struct TreeNode *node = newNode(item); node->left = mergeTrees(t1 == NULL ? NULL : t1->left, t2 == NULL ? NULL : t2->left); node->right = mergeTrees(t1 == NULL ? NULL : t1->right, t2 == NULL ? NULL : t2->right); return node; }