0
我正在使用STD向量制作二叉树。我显著削减下来,但低于总体思路是:数组和二叉树的构造函数
template <class DataType>
class ArrayNode
{
protected:
DataType* _info;
int _left; //index position of left node
int _right;//index position of right node
public:
ArrayNode(const DataType& info, int left, int right);
virtual ~ArrayNode();
DataType& getInfo();
}
template <class DataType>
class ArrayBinaryTree
{
protected:
vector<ArrayNode<DataType>* >* theBinaryTree;
int _root;
int _numOfNodes;
int _size;
//etc.
public:
ArrayBinaryTree(DataType info);
virtual ~ArrayBinaryTree();
}
你会如何创建一个构造函数,让你可以与getInfo()
访问节点?我的想法是这样:
std::vector<ArrayNode<DataType>*> binaryTree(1);
ArrayBTNode<DataType>* element = new ArrayNode<DataType>(info, -1, -1); //some generic data
binaryTree.insert(binaryTree.begin(), 1, element);
theBinaryTree = &binaryTree;
然后用类似(*theBinaryTree->at(0)).getInfo()
访问。 但是,使用这种类型的构造函数,getInfo()
返回null
。什么是建立访问构造函数的更好方法?
您正在使用在函数结束时被销毁的向量的地址。 –
这么多的指针。为什么这么多指针? (我有一种可怕的感觉,ArrayNode :: ArrayNode'也说'_info = &info;') – molbdnilo
所有'*'让我头晕 – user463035818