給出一個字符串形式表達的二叉樹,求出指定節點深度。
輸入的樹形結構字符串格式爲:
1、以父節點、左子樹、右子樹表示的二叉樹;每個父節點不會超過兩個子節點;
2、樹的每一個節點採用單個字母表示;樹的層次採用數字表示,樹根的層次爲1,下一層爲2,不會超過9層;
3、字符串以“節點名稱 層次數 節點名稱 層次數…”的形式出現,同一個父節點下,先出現的爲左子樹。
例如字符串“a1b2c2d3e3f3”生成一棵如下的樹:
a
/ \
b c
/ \ /
d e f
節點a的深度爲3,節點b的深度是2,節點f的深度是1
輸入:一行字符串,表示一個二叉樹。一行字符串,一個字符一個節點,輸入確保字符不會存在重複節點
輸出:指定節點的深度,如果節點不存在,返回0;整數之間用空格隔開
例如:
輸入:a1b2c2d3e3f3
ab
輸出:3 2
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str,user_str;
getline(cin,str);
getline(cin,user_str);
int len=str.size();
int user_len=user_str.size();
int maxDepth=atoi(&str[len-1]);//最大的深度;
for (int i=0;i<user_len;i++)
{
char user_tmp=user_str[i];
for(int j=0;j<len;j++)
{
if (user_tmp==str[j])
{
int position=atoi(&str[++j]);
cout<<maxDepth-position+1<<" ";
break;
}
if (j==len-1)
{
cout<<0<<" ";
break;
}
}
}
cout<<endl;
system("pause");
}