题目地址
题目概述
这道题其实就是把二叉树每个节点的值相加,并放到新的二叉树节点,如果某棵树当前节点为空,他的value值是0
其实这个题主要考察的是二叉树遍历,只不过需要同时遍历两棵树,二叉树遍历代码如下:
1 2 3 4 5 6 7 8 9 10 11 12
| private Node walk(Node x) {
if (x == null) { return null; }
System.out.println(x.value); x.left = walk(x.left); x.right = walk(x.right);
return x; }
|
如何实现
结束条件:当两个数节点都为空,结束当前递归
每层递归做了什么:计算两个val相加(需要判空),根据该值生成新的节点
每层递归返回什么:返回上次计算接Node引用
整体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { if (t1 == null && t2 == null) { return null; }
int val1 = t1 == null ? 0 : t1.val ; int val2 = t2 == null ? 0 :t2.val ;
int val = val1 + val2; TreeNode node = new TreeNode(val); node.left = mergeTrees(t1 == null ? null : t1.left, t2 == null ? null : t2.left); node.right = mergeTrees(t1 == null? null : t1.right,t2 == null ? null : t2.right); return node;
} }
|
不会写递归?如何写递归文章地址:
https://lyl0724.github.io/2020/01/25/1/