合并,就是两个树的结构交集部分,数据相加,不然,取非空部分。
因此,这里至关因而对两棵树同时遍历:
若是两棵树节点都不为空,则数据相加,
不然,直接指针把不为空的节点复制过来。指针
注:这里没有申请内存,而直接对原有的树进行改造,这样能够节省申请内存的时间,且节省一些内存。code
struct TreeNode* mergeTrees(struct TreeNode* t1, struct TreeNode* t2){ struct TreeNode *pTemp = NULL; if ((NULL == t1) && (NULL == t2)) return NULL; else if ((NULL != t1) && (NULL != t2)) { pTemp = t1; pTemp->val = t1->val + t2->val; } else if (NULL != t1) { return t1; } else if (NULL != t2) { return t2; } pTemp->left = mergeTrees(t1->left, t2->left); pTemp->right = mergeTrees(t1->right, t2->right); return pTemp;