C#学习教程:RecursionwithyieldreturnelementorderintreeprivateIEnumerablegetAllNodesRecursively(Nodesubnode){foreach(Nodenodeinsubnode.Nodes)getAllNodesRecursively(node);yieldreturn子节点;}对于以下树结构:A|+--B|+--C|||+--D|+--E当我尝试迭代时:foreach(NodeningetAllNodesRecursively(a)){Console.WriteLine(n);}该函数返回唯一的A值。我希望使用yield-return和递归,并检索Preorder中的元素(在本例中为A、B、C、D、E)。(如果我将收益的回报放在foreach之前,则foreach永远不会发生)。是否可以?您是否尝试过类似的方法:privateIEnumerablegetAllNodesRecursively(Nodesubnode){//在其子节点yieldreturnsubnode之前返回父节点;foreach(Nodenodeinsubnode.Nodes){foreach(NodeningetAllNodesRecursively(node)){yieldreturnn;您的实现以递归方式调用getAllNodesRecursively,但忽略其返回值。是的,这是可能的,只需将yieldreturn放在foreach之前即可。您正在考虑正常return语句的行为。以上就是《C#学习教程:树中yield返回元素顺序递归共享》的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——publicIEnumerablepreOrder(Noderoot){if(root==null)yieldbreak;收益回报根.val;if(root.left!=null)foreach(intiinpreOrder(root.left))yieldreturni;if(root.right!=null)foreach(intiinpreOrder(root.right))yieldreturni;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
