中南oj 1213: 二叉树结点公共祖先

1213: 二叉树结点公共祖先

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 159  Solved: 87 [Submit][Status][Web Board]

Description

一个顺序存储的完全二叉树:

             1

            / \

        2        3

      /   \    /   \

    4     5    6    7

    ...

任意给定两结点的编号,求两结点最近的公共祖先。

 

Input

每组数据一行,为空格隔开的两个数i和j,皆为32位有符号正整数

 

Output

每组数据对应一行,为编号为i和j的结点的最近公共祖先的编号

 

Sample Input

4 5
4 7

Sample Output

2
1

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int n,m;
 6     while(scanf("%d%d",&n,&m)>0)
 7     {
 8         if(n==m)
 9         {
10             printf("%d\n",n);
11             continue;
12         }
13         while(n!=m)
14         {
15             if(n>m) n=n/2;
16             else m=m/2;
17         }
18         printf("%d\n",n);
19     }
20     return 0;
21 }

 

 
posted @ 2013-11-05 16:29  芷水  阅读(311)  评论(0编辑  收藏  举报