Второй template <typename X>
вам не нужен. Также вы можете рассмотреть возможность удаления указателя left
и right
в деструкторе, если каждый узел владеет своим левым и правым узлами.
#include <iostream>
template <typename X>
class binaryTree
{
public:
class node
{
public:
X data;
node *left;
node *right;
~node()
{
delete left;
delete right;
}
};
node root;
};
int main()
{
binaryTree<int> tree{
binaryTree<int>::node{
1,
new binaryTree<int>::node {2, nullptr, nullptr},
new binaryTree<int>::node {3, nullptr, nullptr}
}
};
auto& root = tree.root;
std::cout << root.data << '\n' << root.left->data << '\n' << root.right->data << '\n';
}
Вывод:
1
2
3