SWUST OJ 1053: プリオーダー トラバーサルによって作成されたバイナリ ツリー内の指定されたノードの次数の出力 C++ 実装

トピックの説明

事前順序再帰走査アルゴリズムを使用してバイナリ ツリーを作成し、バイナリ ツリー内の指定されたノードの次数を出力します。二分木のノードデータは単一の大文字の英語文字であることが合意されています。受信したデータが文字「#」の場合はノードを作成する必要がないことを意味し、それ以外の場合はノードを作成します。最後に、作成した二分木における指定したノードの次数を出力します。入力データ シーケンス内の文字「#」と「#」以外の文字の間の順序と番号の関係に注意してください。これにより、作成されるバイナリ ツリーの形状が最終的に決まります。

入力

入力ケースは 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 行で出力します。

 

おすすめ

転載: blog.csdn.net/Ljy_Cxy/article/details/131465172