已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。例:如图二叉树的数据文件的数据格式如下:

查找二叉树 - 图1


格式

输入格式

第一行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


限制

时间限制:1000 ms
内存限制:65536 KB


代码

  1. #include<stdio.h>
  2. struct node
  3. {
  4. int n;
  5. int l;
  6. int r;
  7. }a[300];
  8. int n,m,flag,key;
  9. void find(int k)
  10. {
  11. if(a[k].l)
  12. find(a[k].l);
  13. if(a[k].n==m&&key==0)
  14. {
  15. printf("%d",++flag);
  16. key=1;
  17. return;
  18. }
  19. flag++;
  20. if(a[k].r)
  21. find(a[k].r);
  22. }
  23. int main()
  24. {
  25. int i;
  26. scanf("%d %d",&n,&m);
  27. for(i=1;i<=n;i++)
  28. {
  29. scanf("%d %d %d",&a[i].n,&a[i].l,&a[i].r);
  30. }
  31. find(1);
  32. return 0;
  33. }