首页 > 代码库 > 函数引发二级叉的结算

函数引发二级叉的结算

bool is_left( int n  )//是否为左节点
{
     return n % 2 == 0;
}
bool is_right( int n )//是否为右节点
{
     return 0 != n && ! is_left( n );
}
 
int father( int n  )//父亲节点
{
    if ( 1 == n ) return -1;
    return n / 2;
}
 
int left_most( int n ) //得到节点n同层里最左边的点
{//这个你稍微推算一下就好,嗯
    int res =1;
    while ( n > 1 )
   {
        n /= 2;
        res *= 2;
   }
   return ;
}
 
int common_ancestor( int n , int m ) //得到m和n的共同祖先,
{
    if ( m == n )
       return m;
   if ( m != n && m == 0 || n == 0 )
       return 0;//不存在共同祖先
   return common_ancestor( father ( m ) , father( n )  ) ;
}