题解 | #合并二叉树#
合并二叉树
https://www.nowcoder.com/practice/7298353c24cc42e3bd5f0e0bd3d1d759
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param t1 TreeNode类 * @param t2 TreeNode类 * @return TreeNode类 */ TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { // write code here 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; } };
合并两棵二叉树:
思路:
一般二叉树都可以用递归的思想求解。
子问题:
1.当二叉树两个树,一个是空,一个是单节点。直接返回另一个节点
2.当二叉树两个都是单节点。新建一个二叉树,当前节点赋值为两个节点和,然后将各自的左子数【递归处】合并,右子树合并
3.将合并的结果给到当前节点的head->left, head->right
4.返回head节点