合併,就是兩個樹的結構交集部分,數據相加,不然,取非空部分。
因此,這裏至關因而對兩棵樹同時遍歷:
若是兩棵樹節點都不爲空,則數據相加,
不然,直接指針把不爲空的節點複製過來。指針
注:這裏沒有申請內存,而直接對原有的樹進行改造,這樣能夠節省申請內存的時間,且節省一些內存。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;