题目描述
给定一颗二叉树,请问,如果中序遍历这棵二叉树,那么值为x的结点,是中序遍历这棵二叉树结果中的第几个结点?
比如:如下图所示的二叉树,中序遍历序列为:29、12、8、15、23、5、10,假设x=15,那么值x是该二叉树中序遍历结果中的第4个结点。
输入
第一行n为二叉树的结点个树,n<=100;
第二行x表示要查找的结点的值;
以下第一列数据是各结点的值(均不相等),第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。
注意:读入的第1个结点是树的根结点。
输出
输出一个数即查找的结点编号。
样例输入
7 15 5 2 3 12 4 5 10 0 0 29 0 0 15 6 7 8 0 0 23 0 0
样例输出
4
参考代码:
‘#include
using namespace std;
int n,m,c,s[105],a[105][2],x,y,l;
void f(int i){
if(a[i][0]!=0)
f(a[i][0]);
l++;
if(s[i]==m){
cout<
}
if(a[i][1]!=0)
f(a[i][1]);
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>c;
cin>>x;
cin>>y;
a[i][0]=x;
a[i][1]=y;
s[i]=c;
}
f(1);
return 0;
}