1110: 最近共同祖先(函数专题)

原创 2017年10月16日 16:15:24

1110: 最近共同祖先(函数专题)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 3137  Solved: 2696

SubmitStatusWeb Board

Description

如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结 
点(编号是1 的结点)都有一条唯一的路径,比如从10 到根结点的路径是(10, 5, 2, 1), 
从4 到根结点的路径是(4, 2, 1),从该结点到根结点的路径上的所有结点称为该结点的祖先。现在的问题就是,给定x 和y,求x和y的最近共同祖先,比如,10和4最近共同祖先是2,10和5的最近共同祖先是5。 
定义递归函数 
int common(int x, int y) 

如果x==y, return x; 
如果x>y,求x/2与y的共同祖先; 
否则,求x与y/2的共同祖先; 
}

Input

输入只有一行,包括两个正整数x 和y,这两个正整数都不大于1000。

Output

输出只有一个正整数,即x和y的最近共同祖先。

Sample Input

10 4

Sample Output

2

HINT

Source

**


#include<stdio.h>
int zuxian(int x,int y);
int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    printf("%d\n",zuxian(m,n));
    return 0;
}
int zuxian(int x,int y)
{
    if(x==y)
        return x;
    if(x>y)
        return zuxian(x/2,y);
    return zuxian(x,y/2);
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

zzuli OJ 1110: 最近共同祖先(函数专题)

Description 如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结  点(编号是1 的结点)都有一条唯一的路径,比如从10 到根结点的路径是(...
  • sinat_25926481
  • sinat_25926481
  • 2015年10月07日 16:06
  • 2397

求二叉树中两个节点的最近公共祖先结点

二叉树是搜索二叉树 1、原理:二叉搜索树是排序过的 ,位于左子树的结点都比父结点小,位于右子树的结点都比父结点大,我们只需从根节点开始和两个输入的结点进行比较,如果当前节点的值比两个结点的值都大,那么...
  • xiaocherry1128
  • xiaocherry1128
  • 2017年07月29日 16:26
  • 1534

查找二叉树某两个节点最近的共同祖先及改进方法

这个题目偶尔看到网上有个jie
  • J__King
  • J__King
  • 2014年09月09日 23:12
  • 1787

求二叉树两结点最近的共同祖先结点

求二叉树两结点最近的共同祖先结点题目要求及思路分析 题目要求:已知在二叉树中,* root 为根结点,* p和* q为二叉树中两个结点,试编写求距离它们最近的共同祖先的算法。 ...
  • li827437709
  • li827437709
  • 2017年11月27日 14:14
  • 215

利用栈求二叉树中两节点的最近共同祖先(无父节点指针)

利用栈求二叉树(无回溯指针)中两节点最近共同祖先节点的非递归算法(NCA-Nearest Common Ancestor)。...
  • Wayne_B
  • Wayne_B
  • 2015年05月30日 17:25
  • 1055

求二叉树中任意两结点的最近共同祖先的算法及其证明

一、问题描述   已知一个二叉树T,以及该二叉树中的某两个结点A和B。求:结点A和B的最近共同祖先。 二、算法描述 先序遍历二叉树T,得到其先序序列Seqpre。不失一般性地,设: S...
  • xuzhezhaozhao
  • xuzhezhaozhao
  • 2013年04月24日 23:36
  • 2860

二叉树中找两个结点的最近公共祖先结点

一、搜索二叉树:第一变种是二叉树是一种特殊的二叉树:查找二叉树。也就是树是排序过的,位于左子树上的结点都比父结点小,而位于右子树的结点都比父结点大。我们只需要从根结点开始和两个结点进行比较。如果当前结...
  • yangle4695
  • yangle4695
  • 2016年08月25日 20:34
  • 3090

求二叉树T中结点a和b的最近共同祖先

也不知道方法好不好 先贴在这 /********** 【题目】试编写算法,求二叉树T中结点a和b的最近共同祖先。 二叉链表类型定义: typedef struct BiTNode { TElem...
  • Stranger_CJHan
  • Stranger_CJHan
  • 2015年12月02日 17:09
  • 910

经典算法:寻找最近公共祖先

题目 假设现在他知道了N个人的信息——他们的父亲是谁。给出两个人的名字,找出这两个人是否存在同一个祖先,如果存在,那么他们的所有共同祖先中辈分最低的一个是谁? 输入输出 每个测试点(输入文件)有...
  • wangbaochu
  • wangbaochu
  • 2016年12月28日 20:14
  • 789

【数据结构与算法】求二叉树中两个节点的最近祖先

从根节点开始,当两个节点分别出现在根节点的左、右子树时,则此跟节点就是最近的祖先。若两个节点均在左子树中,则从左子树开始递归,否则从右子树开始递归。那么问题就是,怎么判断两个节点是在左子树,还是右子树...
  • u013177446
  • u013177446
  • 2017年01月05日 17:22
  • 440
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1110: 最近共同祖先(函数专题)
举报原因:
原因补充:

(最多只允许输入30个字)