Помогите шаблонизировать создание списка
Есть структура:
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);