在给定的二叉排序树中查找指定的元素。不考虑空树情况。
- 输入
-
输入为n+2行。第一行为测试数据的组数n,第二行为一棵用广义表表示的二叉排序树,树中元素为int。以下n行为n组测试数据,数据为int。
- 输出
-
输出为n行,分别对应n组测试数据。如果在二叉排序树中存在此数据,输出Yes. 否则输出No.
- 样例输入
-
2
-
7(5,8)
-
1
-
5
- 样例输出
-
No.
-
Yes.
模拟题,用数组实现即可
#include <stdio.h> #include <string.h> char s[1000]; main() { int number; int length,i,j; int p; int a[1000]; int up; int temp; scanf("%d",&number); getchar(); up=0; gets(s); length=strlen(s); i=0; p=0; for(i=0;i<length;i++) { if(s[i]!=' '&&s[i]!='('&&s[i]!=','&&s[i]!=')') { p=0; while(s[i] >= '0' && s[i] <= '9'&&i<length) { p = p * 10 + s[i] - '0'; i++; } a[up++]=p; } else continue; } for(i=0;i<up;i++) for(j=i+1;j<up;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } while(number--) {p=0; scanf("%d",&temp); for(i=0;i<up;i++) { if(a[i]==temp) { p=1; break; } else continue; } if(p==1) printf("Yes.\n"); else printf("No.\n"); } }