算法题32:合并二叉树
思路
- step 1:首先判断t1与t2是否为空,若为则用另一个代替,若都为空,返回的值也是空。
- step 2:然后依据前序遍历的特点,优先访问根节点,将两个根点的值相加创建到新树中。
- step 3:两棵树再依次同步进入左子树和右子树。
代码
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
// write code here
//两棵树同时遍历
//若只有一个节点返回另一个,两个都为NULL自然返回NULL
if (t1 == NULL)
return t2;
if (t2 == NULL)
return t1;
//根左右的方式递归
TreeNode* head = new TreeNode(t1->val + t2->val);
head->left = mergeTrees(t1->left, t2->left);
head->right = mergeTrees(t1->right, t2->right);
return head;
}