时间限制:1秒 内存限制:128M
题目描述
已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点(x在二叉树中是唯一的),并指出是第几个结点。
输入描述
第一行n为二叉树的结点个树,n≤100;第二行x表示要查找的结点的值;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。
输出描述
一个数即查找的结点编号。
样例
输入
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<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
int n,x,b[300]={-1},cnt=1;
struct node{int zhi,zb,yb;
}a[300];
void zh(int s){if(a[s].zb)zh(a[s].zb);b[cnt++]=a[s].zhi;if(a[s].yb)zh(a[s].yb);
}
int main(){cin>>n>>x;for(int i=1;i<=n;i++){cin>>a[i].zhi>>a[i].zb>>a[i].yb;}zh(1);for(int i=1;i<cnt;i++){if(b[i]==x){cout<<i;break;}}return 0;
}