LeetCode --617.合并二叉树

在这里插入图片描述
解法:主要考察二叉树的遍历方式,前、中、后遍历都可。这里使用前序遍历解答。注意考虑节点不存在null的情况。注意stack进栈的对象数组,出栈也只能是对象数组,需要起个名字

	public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {  // t1, t2是根节点
		if (t1 == null) {
			return t2;
		}
	    Stack<TreeNode[]> stack = new Stack<>();
	    stack.push(new TreeNode[] {t1, t2});
	    while (!stack.isEmpty()) {
	    	TreeNode[] t = stack.pop();  // t是对象数组,循环第一次第一项t[0]是t1, 第二项t[1]是t2
	    	if (t[0]==null || t[1]==null)
	    		continue;
	    	t[0].val += t[1].val;
	    	//注意压栈顺序,先压右子节点
	    	if (t[0].right==null) 
	    		t[0].right = t[1].right;
	    	else
	    		stack.push(new TreeNode[] {t[0].right, t[1].right});
	    	//后左子节点
	    	if (t[0].left==null) 
	    		t[0].left = t[1].left;
	    	else
	    		stack.push(new TreeNode[] {t[0].left, t[1].left});
	    }
	    return t1;
 	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值