文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
合并二叉树
解题思路
递归。
同步遍历两棵树上的节点,直接在 t1 上修改。
- t1 为 null、t2 不为 null,t1 换成 t2。
- t2 为 null、t1 不为 null,t1 仍为 t1。
- t1 和 t2 都为 null,t1 仍为 t1。
- t1、t2 都存在,将 t2 的值加到 t1 上。
- 子树合并使用递龟。
代码实现
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
const mergeTrees = (
root1: TreeNode | null,
root2: TreeNode | null
): TreeNode | null => {
if (root1 === null && root2) {
return root2;
}
if ((root1 && root2 === null) || (root1 === null && root2 === null)) {
return root1;
}
root1.val += root2.val;
root1.left = mergeTrees(root1.left, root2.left);
root1.right = mergeTrees(root1.right, root2.right);
return root1;
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论