腾讯c++开发(KPI面)

经典KPI,笑嘻了
2021-9-14 

投递算法直接简历没过。。

被C++开发捞起来了
0、为什么要投C++开发。。
1、项目
2、实习
3、C++熟悉吗
4、做道题吧,重建二叉树
/*
 * @Description: 
 * @Author: suyunzheng
 * @Date: 2021-09-14 13:39:58
 * @LastEditTime: 2021-09-14 13:45:08
 * @LastEditors: maple
 */


#include <iostream>
#include <vector>

#include <queue>


using namespace std;

struct TreeNode{
    int val;

    TreeNode* left;
    TreeNode* right;

    TreeNode(int a ):val(a),left(nullptr), right(nullptr){;}


}; 
TreeNode* build(const vector<int>& in_vec,int in_left, int in_right,  const vector<int>& pos_vec, int pos_left, int pos_right ){

    if(in_left > in_right){
        return nullptr;
    }
    if(pos_left > pos_right){
        return nullptr;
    }
    
    TreeNode* root = new TreeNode(pos_vec[pos_right]);
    
    int i = 0;
    for(; i<in_vec.size(); i++){
        if(in_vec[i]==pos_vec[pos_right]){
            break;
        }
    }
    cout << "i: " << i << endl;

    root->left = build(in_vec, in_left, i-1, pos_vec, pos_left, pos_left+i-in_left-1);
    root->right = build(in_vec, i+1, in_right, pos_vec, pos_left+i-in_left , pos_right-1);

    return root;

}

void printTree(TreeNode* root){
    queue<TreeNode*> q;
    if(root){
        q.push(root);
    }

    while(!q.empty()){
        int len = q.size();
        while(len-->0){
            auto node = q.front();
            q.pop();
            cout << node->val << " ";
            
            if(node->left){
                q.push(node->left);
            }
            if(node->right){
                q.push(node->right);
            }
        }
        cout << endl;
    }
}

int main() {
    //int a;
    //cin >> a;
    vector<int> in_vec = {9, 3, 15, 20, 7};
    vector<int> pos_vec = {9, 15, 7, 20, 3};

    auto root = build(in_vec, 0, in_vec.size()-1, pos_vec, 0, pos_vec.size()-1);

    printTree(root);
}


八股文没问,不知道面试官啥意思,不过人还是挺好的。🤤🤤🤤
#面经##笔经##腾讯#
全部评论

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务