5

我正在练习删除二叉搜索树上的节点,并使用空模式为空链接(NullNode)创建了一个特殊类型,因此我可以为“空”类型添加一些理想的行为。Node类型和Nullnode类型共享相同的INode接口,其中包括递归方法。

INode接口包括用于PreOrder 、InOrder 和 PostOrder 遍历的IEnumerable递归方法,但我不希望 NullNode 返回任何元素(通过 yield return 语句)。

我能做些什么?

我知道我可以使用一个不可能的 if 条件,然后在方法中放置一个 yield return 语句,但我不认为这个解决方案是好的。应该有更好的方法。

4

3 回答 3

14

使用 yield break 语句:

private static IEnumerable<INode> YieldEmpty()
{
    yield break;
}
于 2012-11-03T20:31:51.320 回答
3

您是否尝试过返回这样的内容而不返回任何内容(或空枚举器):

return Enumerable.Empty<T>();

或者也许 usingyield break;可以作为退出收益率循环的替代方案。希望这可以帮助你...

于 2012-11-03T20:29:41.843 回答
2
private static IEnumerable<T> ReturnNoElements()
{
   return Enumerable.Empty<T>();
}
于 2012-11-03T20:30:19.937 回答