【发布时间】:2018-07-13 10:41:12
【问题描述】:
我试图合并两个二叉树,如果我使用“return root;”最后,系统告诉我“错误:找不到符号:变量根”。当我添加“return root;”时它可以工作到每一个条件。我不明白为什么。此外,根据我过去的经验,似乎我不必在递归函数调用之后编写返回语句。有人可以解释一下吗?谢谢!
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if (t1 == null && t2 == null) {
return null;
}
else if (t1 == null) {
TreeNode root = new TreeNode(t2.val);
root.left = mergeTrees(null, t2.left);
root.right = mergeTrees(null, t2.right);
}
else if (t2 == null) {
TreeNode root = new TreeNode(t1.val);
root.left = mergeTrees(t1.left, null);
root.right = mergeTrees(t1.right, null);
}
else {
TreeNode root = new TreeNode(t1.val + t2.val);
root.left = mergeTrees(t1.left, t2.left);
root.right = mergeTrees(t1.right, t2.right);
}
return root;
}
【问题讨论】:
-
您在 else 语句中声明了 root,当它遇到您的 return 语句时,它就失去了作用域。如果要返回它,请在 if 语句开始之前声明 root,否则从 else 中返回它。
标签: recursion return binary-tree