文章

617. 合并二叉树

问题617 合并二叉树 ★☆☆☆☆

https://leetcode-cn.com/problems/merge-two-binary-trees/

这个题目从递归的角度出发并不难想到解题思路,merge两个二叉树可以处理为:merge它们的左子树,merge它们的右子树,merge根节点,并把merge左右子树的结果作为新的左右子树。

如果不使用递归呢?不使用递归的话,对两颗二叉树做层序遍历,然后一层一层的merge,处理起来也不复杂,需要注意对于空节点,需要按null入队列,这样才能确认需要merge的节点之间的对应位置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
		if (root1 == null && root2 == null) {
			return null;
		} else if (root1 != null && root2 == null) {
			return root1;
		} else if (root1 == null && root2 != null) {
			return root2;
		} else {
			TreeNode left = mergeTrees(root1.left, root2.left);
			TreeNode right = mergeTrees(root1.right, root2.right);
			root1.val = root1.val + root2.val;
			root1.left = left;
			root1.right = right;

			return root1;
		}
	}

在 LeetCode 查看

本文由作者按照 CC BY 4.0 进行授权