问题来自:
https://leetcode.com/problems/binary-tree-right-side-view/
这是我的代码:
public class Solution {
static int maxLevel = 0;
public List<Integer> rightSideView(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
rightViewUtil(root, 1, list);
return list;
}
private void rightViewUtil(TreeNode root, int level, List list){
if (root == null) return;
if (maxLevel < level){
list.add(root.val);
maxLevel = level;
}
rightViewUtil(root.right, level + 1, list);
rightViewUtil(root.left, level + 1, list);
}
}
当我提交代码时,它显示我的代码给出了错误的答案:
输入:{1,2}输出:[2]预期:[1,2]
但是,当我使用main
在本地运行代码时,(我在本地更改了类名)
TreeNode node = new TreeNode(1);
node.right = new TreeNode(2);
// node.left = new TreeNode(2);
List<Integer> list = new BinaryTreeRightSideView().rightSideView(node);
for (Integer i : list){
System.out.println(i);
}
实际输出为1 2
。
答案 0 :(得分:0)
这个真的令人费解,但问题是你已经maxLevel
静态了。结果,该值通过多次测试持续存在。删除static
,您的代码将通过测试。
在该测试的独立运行中,您的代码工作得很好。问题是,当测试开始时maxLevel
已经1
导致您的代码不添加根节点。
答案 1 :(得分:0)
int [] maxLevel = new int [] {0};并将其作为参数传递给util func。