我不知道是什么导致程序失败,除了它与尝试为左右孩子分配一些指针有关。没有错误消息,程序只是无法运行。我只是假设这是因为我错误地分配了指针。
这是结构:
struct TreeNode
{
Type nodeinfo;
BinaryTree<Type> *left;
BinaryTree<Type> *right;
};
该类的名称是使用模板的 BinaryTree。这是有问题的方法:
template <typename Type>
void BinaryTree<Type>::setSubtree(Type a){
root = new TreeNode;
BinaryTree<Type> *b,*c;
root->nodeinfo=a;
b->root = s.top();
root->right = b;
s.pop();
c->root = s.top();
root->left = c;
s.pop();
s.push(root);
}
s 是 TreeNode* 类型的堆栈并保存节点。root 是单个节点。
改过很多次了,都忘了我是从什么开始的。这是测试代码(setInfo 工作得很好):
tree.setInfo('b');
tree.setInfo('c');
tree.setSubtree('-');
任何关于我应该如何分配指针的见解将不胜感激。