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