更多笔试题👉「校园招聘面试题库」:校园招聘笔试面试题目合集
- 写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。
int Max(bitree * root)
{ if(root==NULL)return 0;
else{ if(root->data>max)
max=root->data;
Max(root->lchild);
Max(root->rchild);
}
return max;
}
int Min(bitree * root)
{ if(root==NULL)return 0;
else{ if(root->data<min)
min=root->data;
M(root->lchild);
M(root->rchild);
}
return min;
}
int main()
{ bitree *root;
root=creatbitree();
printf("最大值与最小值之差为:\n");
printf("%d",abs(Max(root)-Min(root)));
return 0;
}
2、给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如, query为"acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。
#include "stdio.h"
#include "string.h"
#define N 100
int GetMaxCommStr(char *s1,char *s2,char *s3)//s1、s2 为要对比的俩个字符串,
{ //s3用来存储最大的公共字符串
// char *s1=stra, *s2=strb;
char len1 = strlen(s1);
char len2 = strlen(s2);
char maxlen = 0;
char i,j,r1;
for( i = 0; i < len1; i++)
{
for(j = 0; j < len2; j++)
{
if(s1[i] == s2[j]) //找到了第一个相等的
{
char as = i, bs = j, count = 1; //保存第一个相等的首地址
while( (as+1<len1) && (bs+1<len2) && (s1[++as] == s2[++bs]) ) //查找最大相等长度
count++;
if(count > maxlen) //如果大于最大长度则更新
{
maxlen = count;
r1=i; //存储公共子字符串的起始位
}
}
}
}
if (maxlen>0) //有公共子字符串
{
for(i=0;i<maxlen;i++)
{
*(s3+i)=*(s1+i);
}
}
return maxlen;
}
int main ()
{
char a[N]={0},b[N]={0},str[N]={0};
printf ("Enter two string(the length < 100)!\n",N);
scanf("%s%s",a,b);
int maxoflen=GetMaxCommStr(a,b,str);
printf("max of length is: %d\n",maxoflen);
return 0;
}
第一题:测试淘宝站内的搜索系统,请问你能想到哪些方法来进行测试?