77 DFS和BFS解合并二叉树
2023-12-29 17:57:01
给定两个二叉树,想象当你将他们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠,你需要将他们合并为一个新的二叉树,合并的规则是如果两个节点重叠·,那么惊叹额不得值相加作为节点的新值,否则不为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;
}
文章来源:https://blog.csdn.net/qq_52299902/article/details/135292869
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!