なあ、再帰関数好きな人いる? パート2 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0322NAS6 ◆n3AmnVhjwc
2015/09/12(土) 09:40:00.52ID:u3wwvrmvclass tree{
public:
tree* parent;//rootのparentはnullptr
tree* chlid[];//説明の便宜上
int childsize; int crnt;//子ノード指示変数
...
//終了検知
bool end(tree* root, bool b){
return ((b || !childsize) && this == root && (crnt < 0 || childsize <= crnt))
}
//crntの順番のノードを返す
tree* crntchild(bool& b){
if(crnt < 0 || childsize <= crnt) { b = true; return parent; }
return child[crnt];
}
};
//root以下のノード処理
void nodefunc(tree* root)
{
crntzero(root);//root以下のcrntを全てゼロ初期化処理:詳細は省略
tree* v = root; bool b = false;
//最初のノード処理
while(!v->end(root, b)){
v->crnt += 1; //次のノード b = false;
v = v->crntchild(b);
if(!b){//v:子ノード処理}
else{//v:親ノード処理}
}
}
■ このスレッドは過去ログ倉庫に格納されています