I have read this. My question is not about how to write enumerator, but how to do this for TREEs<br><br>Thanks<br><br><br>发送自魅族MX<br><br>-------- 原始邮件 --------<br>发件人:Mattias Gaertner <nc-gaertnma@netcologne.de><br>时间:3月21日 15:39 周四<br>收件人:fpc-pascal@lists.freepascal.org<br>主题:Re: [fpc-pascal] How To write an enumerator for trees<br><br>On Thu, 21 Mar 2013 11:11:49 +0800<br>Xiangrong Fang <xrfang@gmail.com> wrote:<br><br>> Hi,<br>> <br>> I would like to add enumerator support for my TTreap implementation (<br>> <a href="https://github.com/xrfang/fpcollection/blob/master/src/units/treap.pas">https://github.com/xrfang/fpcollection/blob/master/src/units/treap.pas</a>).<br>> <br>> The tree nodes are defined as:<br>> <br>>       PNode = ^TNode;<br>>       TNode = record<br>>         Count: Cardinal;<br>>         Key: TKey;<br>>         Value: TValue;<br>>         Priority: Cardinal;<br>>         Left, Right: PNode;<br>>       end;<br>> <br>> Now I don't know how to write an enumerator for it.  I would like to<br>> traverse the tree "In-Order", either from the left-most node or from the<br>> right-most node, so that I can output nodes like:<br>> <br>>       for n in MyTreap do WriteLn(n^.Key);<br><br>See here:<br><br><a href="http://wiki.freepascal.org/for-in_loop#Declaring_enumerators">http://wiki.freepascal.org/for-in_loop#Declaring_enumerators</a><br><br>Mattias<br>_______________________________________________<br>fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org<br><a href="http://lists.freepascal.org/mailman/listinfo/fpc-pascal">http://lists.freepascal.org/mailman/listinfo/fpc-pascal</a><br>