最近 C++ の学習を始めましたが、テンプレートのメカニズムを理解するのに問題があります。タスクは、まずユーザー定義のバイナリ ツリーを構築することです。コードをコンパイルできません。
#include <iostream>
using namespace std;
template <typename DataType> struct TreeNode
{
TreeNode(DataType val, TreeNode *leftPtr = null, TreeNode *rightPtr = null)
{
left = leftPtr;
right = rightPtr;
data = val;
}
TreeNode *left, *right;
DataType data;
};
template <typename DataType> TreeNode *BuildTree()
{
TreeNode *root = new TreeNode(10, new TreeNode(20), new TreeNode(30));
TreeNode *curRoot = root;
curRoot = curRoot->left;
curRoot->left = new TreeNode(40);
curRoot->left->left = new TreeNode(70);
curRoot->right = new TreeNode(50);
curRoot = curRoot->right;
curRoot->left = new TreeNode(80, new TreeNode(100), new TreeNode(110));
curRoot = root->right;
curRoot->left = new TreeNode(60);
curRoot = curRoot->left;
curRoot->right = new TreeNode(90, new TreeNode(120), new TreeNode(130));
return root;
}
int main()
{
TreeNode *treeRoot = BuildTree<int>();
cin.get();
return 0;
}
関数BuildTree
は、具体的なデータ型を使用して、tree の具体的なインスタンスを構築します。私の間違いを理解するのを手伝ってください。使用後にメモリを解放しないという事実に注意を払わないでください。それはただのドラフトです。