c語言實現滿二叉排序樹最小子樹根節點值查詢

2020-08-11 16:31:12

/*對於一棵滿二叉排序樹深度爲K,節點數爲 2^K - 1 ;節點值爲 1至 (2^K-1)。

  • 給出K和任意三個節點的值,輸出包含該三個節點的最小子樹的根節點值
  • 樣例輸入:4 10 15 13
  • 樣例輸出:12
    */

#include<stdio.h>
#include<math.h>

int main(void)
{
int i,k,a,b,c,cur,out;
printf(「pls input num:」);
scanf("%d,%d,%d,%d",&k,&a,&b,&c);
//printf(「inputed:%d,%d,%d,%d」,k,a,b,c);

    cur = pow(2,k-1);
    for(i=k-1;i>0;i--)
    {
       if((cur>a) && (cur>b)&&(cur>c))
      {
            //cur = cur - pow(2,i-1);
            cur = pow(2,i-1);
      }
      else if((cur<a)&&(cur<b)&&(cur<c))
      {
            cur = cur + pow(2,i-1);
      }
      else
      {
            out = cur;
            break;
      }
    }
    printf("\r\n%d\r\n",out);

}

gcc -lm 編譯可執行於linux

在这里插入图片描述