【发布时间】:2015-04-25 14:17:50
【问题描述】:
所以我想用 C++ 创建一个 AVL 树。我使用了一个类来制作节点,并使用一个类来完成其余的功能(插入、删除等)。当我想制作不止一棵树时,我决定我需要制作更多的根(每棵树一个)。问题是当我在main 中声明新根时。当我在外面宣布它似乎工作正常。
avlNode:
class avl_node
{
public:
int data;
avl_node *left;
avl_node *right;
}*root;
avlTree::插入实现:
avl_node* avlTree::insert(avl_node* root, int item)
{
if (root == NULL) {
root = new avl_node;
root->data = item;
root->left = NULL;
root->right = NULL;
return root;
}
if (item < root->data) {
root->left = insert(root->left, item);
}
else if (item > root->data) {
root->right = insert(root->right, item);
}
else if (item == root->data) {
cout << "this exists" << endl;
}
root = balance(root);
return root;
}
主要功能:
int main()
{
avl_node* roott;
int item;
avlTree avl;
avlTree kk;
root = avl.insert(root, item);
roott = kk.insert(roott, item);
kk.display(roott, 1);
return 0;
}
【问题讨论】:
-
有什么问题?
-
我不明白你的问题。
-
@Jenny 我无法发现任何
avl_node*指针的内存分配。 -
当我写这个 avl_node *roott;在主要程序停止工作,但当我在外面写它工作正常
-
贴出
avlTree::insert的实现。