フィナーレの最初のレビュー:バイナリツリーの基本操作(2)

バイナリツリーのシーケンストラバーサル:

http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/2711/pid/3344

この質問は前の質問に連絡する必要があります:スタックとキュー

時間を節約し、機能のみを出力する

void cengxu(struct tree * root)
{     int in、out;     struct tree * temp [55];     in = 0;     out = 0;     temp [in] = root;     if(in> out)     {         if(temp [out] )//出力がカウントされることを確認します。inを使用しないように注意してください。inがNULLで停止すると、残りのout ++は来ません         {             printf( "%c"、temp [out]-> data);             temp [in ++] = temp [out]-> l; //左の息子は             temp [in ++] = temp [out]-> r; //右の息子は         }         out ++;     } }に入ります















手動でデバッグするか、最も単純なツリーabcを作成しましょう。このブック構造ポインター配列は、最初にツリーのルートを格納し、in> outを保証する条件で出力し、次に左右の子をキューに入れてから、同じ

葉の数を数えることは、一番下の子供を数えることを意味します(彼の下の左と右の子供は両方とも空です)

上司の記事を参照してください:https//blog.csdn.net/zhangkongzhongyun/article/details/38037059

http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/2711/pid/3342

ボイドsearchleaf(構造体ノード*ルート)
{     IF(ルート)     {         IF(root-> L == NULL && root-> R = NULL)         {             カウント++。         }         searchleaf(root-> l);         searchleaf(root-> r);     }     リターンカウント; }










手動デバッグ:abcツリーを構築するには、最初にsearchleaf(root-> l)->次にbの下部がNULLであるためcount ++、次に直接検索(root-> r)し、以下がNULLであることがわかるため、countが2回追加されます。同じことが他のより複雑な木にも当てはまります

 

おすすめ

転載: blog.csdn.net/weixin_44067773/article/details/87867662