トピックの説明
事前順序再帰走査アルゴリズムを使用してバイナリ ツリーを作成し、バイナリ ツリー内の指定されたノードの次数を出力します。二分木のノードデータは単一の大文字の英語文字であることが合意されています。受信したデータが文字「#」の場合はノードを作成する必要がないことを意味し、それ以外の場合はノードを作成します。最後に、作成した二分木における指定したノードの次数を出力します。入力データ シーケンス内の文字「#」と「#」以外の文字の間の順序と番号の関係に注意してください。これにより、作成されるバイナリ ツリーの形状が最終的に決まります。
入力
入力ケースは 2 行に分かれており、1 行目はキーボードから入力された大文字の英字と「#」文字で構成される文字列 (対応するバイナリ ツリーの作成に使用されます) を受け入れ、2 行目はノード データを指定します。
出力
#include<bits/stdc++.h>
using namespace std;
char cmp;
int ans = 0;
struct{
int l, r;
}z[105];
int creat(){
char ch;
cin>>ch;
if(ch=='#') return ch;
z[ch].l = creat();
z[ch].r = creat();
return ch;
}
int main(){
creat();
cin>>cmp;
if(z[cmp].l!='#') ans++;
if(z[cmp].r!='#') ans++;
cout<<ans;
return 0;
}
この使用例に対応するバイナリ ツリー内の指定されたノードの次数を 1 行で出力します。