最近我开始玩 C++,即类和指针。我四处寻找类似的问题,但没有任何帮助。
我有一个二叉搜索树类,它以字符串格式保存一些信息(好吧,char *),但是在向树添加新节点后,我无法取回信息,因为它返回垃圾。
这是我的代码的样子:
class Node
{
Node *lNode;
Node *rNode;
char *name;
public:
void setName(char *n) { name = n; }
char *getName() { return name; }
}
class Tree
{
Node *root;
Node *addNode(Node *, Node *);
public:
Tree() { root = NULL };
int addNewNode(Node *);
void print();
};
int Tree::addNewNode(Node *n)
{
root = addNode(root, n);
cout << root->getName() << endl; // this returns the name correctly
}
Node *Tree::addNode(Node *subtree, Node *node)
{
if(subtree== NULL)
{
subtree = node;
}
else if(node->getName() <= subtree->getLeft())
{
subtree->setLeft(addNode(subtree->getLeft(), node));
}
else
{
subtree->setRight(addNode(subtree->getRight(), node));
}
return subtree;
}
void Tree::print()
{
cout << root->getName() << endl; // this does not!
}
这就是我调用方法的地方:
Tree *myTree = new Tree();
Node *n = new Node();
n->setName(name);
myTree->addNewNode(n);
树变量是外部容器类的私有成员属性,实际上是在该类外部创建以传递给构造函数。当我调用 addNewNode 方法时,会向树中添加一个节点,但是当我想打印出存储在根中的节点的名称时,它只会出现垃圾。我想某处有一个混乱的指针,但我一辈子都找不到它。
任何帮助将不胜感激。