Помогите шаблонизировать создание списка

Есть структура:

    struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};

вот так получаются нужный список:

 //Input: root = [4,2,nullptr,3,1,nullptr,nullptr,5]
    int v[] = {4, 2, NULL, 3, 1, NULL, NULL, 5};
    TreeNode* TN0_; TreeNode* TN1_; TreeNode* TN2_; TreeNode* TN3_; TreeNode* TN4_; TreeNode* TN5_; TreeNode* TN6_; TreeNode* TN7_;

    TN7_ = new TreeNode(v[7], nullptr, nullptr);
    TN6_ = new TreeNode(v[6], nullptr, nullptr);
    TN5_ = new TreeNode(v[5], nullptr, nullptr);
    TN4_ = new TreeNode(v[4], TN7_, nullptr);
    TN3_ = new TreeNode(v[3], nullptr, nullptr);
    TN2_ = new TreeNode(v[2], nullptr, nullptr);
    TN1_ = new TreeNode(v[1], TN3_, TN4_);
    TN0_ = new TreeNode(v[0], TN1_, nullptr);

    // TN0_  вот этот результат нужно

и еще

 //Input: root = [3,2,3,null,3,null,1]
    int v1[] = { 3,2,3,NULL,3,NULL,1 };
    TreeNode* TN0_1; TreeNode* TN1_1; TreeNode* TN2_1; TreeNode* TN3_1; TreeNode* TN4_1; TreeNode* TN5_1; TreeNode* TN6_1; 

    TN6_1 = new TreeNode(v1[6], nullptr, nullptr);
    TN5_1 = new TreeNode(v1[5], nullptr, nullptr);
    TN4_1 = new TreeNode(v1[4], nullptr, nullptr);
    TN3_1 = new TreeNode(v1[3], nullptr, nullptr);
    TN2_1 = new TreeNode(v1[2], nullptr, TN6_1);
    TN1_1 = new TreeNode(v1[1], nullptr, TN4_1);
    TN0_1 = new TreeNode(v1[0], TN1_1, TN2_1);

    // TN0_1  вот этот результат нужно

Как это выполнять шаблонно? по типу: TreeNode* TN = foo(v);


Ответы (0 шт):