【发布时间】:2017-03-29 15:18:27
【问题描述】:
兄弟节点是具有相同父节点的节点。在二叉树中,最多可以有一个兄弟姐妹。不应该打印根,因为根不能有兄弟。
我为此编写了代码,该代码在我迄今为止使用的所有测试用例中都可以正常工作,但是当我尝试在在线判断中提交它时,大多数情况下都出错了。尽管我已尽力弄清楚它是什么,但我无法弄清楚可能是什么错误。我也无法为特定的测试用例试运行,因为我无权访问它们。
public static void printNodesWithoutSibling(BinaryTreeNode<Integer> root) {
if(root==null)
return;
printNodesWithoutSibling(root.left);
printNodesWithoutSibling(root.right);
if(root.right==null && root.left!=null)
{
System.out.print(root.left.data+" ");
return;
}
else if(root.left==null && root.right!=null)
{
System.out.print(root.right.data+" ");
return;
}
}
【问题讨论】:
-
听起来对你的教授或助教来说是个好问题
-
是否至少有一个样本预期输出?代码总是添加一个空格。即使对于最后一个节点,这是否可以接受?
-
是的 4 个给定的测试用例运行良好,但其他 5 个不能
-
这可能取决于预期的遍历。您的代码对每个节点执行的操作是在左侧子树中打印“没有兄弟姐妹的节点”,然后在右侧子树中打印,最后打印当前节点的其中一个子节点(如果它没有兄弟节点)。也许预期的结果会在遍历中遇到“没有兄弟姐妹的节点”时立即打印出来。您是否尝试过将 if/else 放在 两个递归调用之前?
-
@Onheiron 是的,我已经试过了
标签: java data-structures binary-tree