バイナリツリーのシーケンストラバーサル:
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回追加されます。同じことが他のより複雑な木にも当てはまります