此题不要尝试去建立数,题目中无限大的树是真的很大,那个测试数据是真的容易超时,只要利用完全二叉树的性质,结点的父结点的值是该结点的值除以二,就可以走出一条路径。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef struct Tree
{
int data;
int parent;
}Tree;
int main()
{
int i, j;
int x, y;
while (1)
{
int flag = 1;
scanf("%d %d", &x, &y);
if (x == 0 && y == 0)
break;
else
{
for (i = x; i != 0; i = i / 2)
{
for (j = y; j != 0; j = j / 2)
{
if (i == j)
{
flag = 0;
break;
}
}
if (flag == 0)
break;
}
}
printf("%d\n", i);
}
return 0;
}