我认为使用新的C#本地函数可以摆脱强制性的私有递归函数。显然,此函数“应该”对树进行一些后序遍历。所以,只有在没有左右子节点可用时才给出元素。
代码编译,它“工作”,但是当调试时忽略了对本地函数的递归调用:
问题出在哪里?谢谢!
代码编译,它“工作”,但是当调试时忽略了对本地函数的递归调用:
PostOrderRecursive(currentNode.Left)
和PostOrderRecursive(currentNode.Right)
,因此完全没有进行递归操作。问题出在哪里?谢谢!
public IEnumerable<ElementType> GetSubtreeFlattenedPostOrder()
{
return PostOrderRecursive(this);
IEnumerable<ElementType> PostOrderRecursive(BinaryTree<ElementType> currentNode)
{
if (currentNode.HasLeft)
PostOrderRecursive(currentNode.Left);
if (currentNode.HasRight)
PostOrderRecursive(currentNode.Right);
yield return currentNode.element;
}
}
HasLeft
或HasRight
是否有一个为true
?如果没有,调试它们并找出原因。 - fredrik