77 DFS和BFS解合并二叉树

给定两个二叉树,想象当你将他们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠,你需要将他们合并为一个新的二叉树,合并的规则是如果两个节点重叠·,那么惊叹额不得值相加作为节点的新值,否则不为null的节点将直接作为新二叉树的节点。

DFS求解:

public TreeNode mergeTwo(TreeNode root1,TreeNode root2)
{
if(root1==null&&root2==null){return null;}else if(root1==null&&root2!=null){return root2;}
else if(root1!=null&&root2==null){return root1;}else
{
TreeNode newNode=new TreeNode();
newNode.val=roo1.val+root2.val;
newNode.left=mergeTwo(root1.left,root2.left);
newNode.right=mergerTwo(root1.right,root2.right);
return newNode;
}
}
public TreeNode MergeTwo(TreeNode root1,TreeNode root2)
{
TreeNode root=TreeNode(root1,root2);
​​​​​​​return root;
}

BFS求解:每次往队列中添加两个元素,若两棵树的两个子节点都存在的话,生成新的节点。

public TreeNode mergeTwo(TreeNode root1,TreeNode root2)
{
if(root1==null&&root2==null){return null;}
else if(root1==null&&root2!=null){return rott2;}else if(root1!=null&&root2==null){return root1;}
Queue<TreeNode>queue=new LinkedList<TreeNode>();
queue.add(root1);
queue.add(root2);
while(!queue.isEmpty())
{
TreeNode treeNode1=queue.poll();
TreeNode treeNode2=queue.poll();
treeNode1.val+=treeNode2.val;
if(treeNode1.left==null){treeNode1.left=treeNode2.left;}
else 
{
if(treeNode2.left!=null){queue.add(treeNode.left);queue.add(treeNode.right);}
}

if(treeNode1.right==null){treeNode1.right=treeNode2.right;}
else 
{
if(treeNode2.right!=null){queue.add(treeNode.left);queue.add(treeNode.right);}
}
}
​​​​​​​return root;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值