java合并二叉树算法

本文介绍了如何使用Java合并两个二叉树。合并过程通过同步遍历结点,如果同一位置上有两个结点t1和t2,则保留t1并将其值加上t2的值。如果任一结点不存在,则保留存在的结点。文章提供了两种不同的实现方法。
摘要由CSDN通过智能技术生成

解题的思路:

合并两个二叉树当然就是同步遍历了,对于相同位置上的一对结点t1和t2,处理策略是:

若t1和t2都存在,则只需要保留其中一个结点(如t1),将另一结点的值加到此结点上即可(如t1.val += t2.val)。
若t1或t2任一不存在,则合并后的二叉树对应位置上的结点就是存在的那个了。
若t1和t2都不存在,则合并后仍不存在。
 

方法一:

class AddTree{
	public class TreeNode{
		int val;
		TreeNode left;
		TreeNode right;
		TreeNode (int x){val = x;}
	}
	public TreeNode MakeTree(TreeNode t1,TreeNode t2){
		if((t1==null&&t2==null)||t1==null){
			return t2;//如果t1 t2的value都为null或t1为null,返回t2.value
		}
		if(t2==null){
			return t1;
		}
		t1.val +=t2.val;
		t1.left = MakeTree(t1.left,t2.left);
		t1.right = MakeTree(t1.right,t2.right);
		return t1;
	}
}

 

方法二:

class AddTree{
	public class TreeNode{
		int val;
		TreeNode left;
		Tr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值