1. 程式人生 > >騰訊2017暑假筆試題-查詢二叉樹的根

騰訊2017暑假筆試題-查詢二叉樹的根

/*
騰訊2017暑假筆試題-查詢二叉樹的根
對於一個高度為k的滿排序二叉樹,給定k和三個數,
找到這三個數的最小根節點
*/

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

//v中3個已經排序過的元素
int Help(int lo, int hi, vector<int>& v)
{
    int mid = (hi + lo) / 2;
    if (mid == v[1] || (v[0] < mid && v[2
] > mid)) return mid; else if (v[0] >= mid) { return Help(mid+1, hi, v); } else return Help(lo, mid-1, v); } int main() { int k; vector<int> v(3, 0); cin >> k >> v[0] >> v[1] >> v[2]; sort(v.begin(), v.end()); int
count = pow(2, k) - 1; cout << Help(1, count, v) << endl; }