[英]How to implement an avl tree in c++ with each node being another avl tree
[英]C++ Tree with constant time to each node
我正在和树一起工作。 每个节点都有带有Tree *值的对象。 我读取的数据看起来像:
1
2
2
...
这意味着,将1作为0的子代,将2作为1的子代,将3作为子代o2。以常规格式:将x作为i-1的子代,其中i是行数。
我决定做树,看起来像:
class Tree {
public:
int value;
stack <Tree*> children;
Tree ();
Tree (int x) {value = x;}
void wypisz();
};
所以现在当我阅读输入时,我可以做些类似的事情(但它不起作用):
int n,x;
scanf("%d",&n);
Tree **tab;
tab = (Tree **) malloc(sizeof(Tree*)*n);
Tree *n = 0;
tab[0] = new Tree(0);
for(int i=1;i<n;++i) {
scanf("%d",&x);
n = new Tree(x);
tab[i] = n;
tab[i-1]->children.push(n);
}
delete n;
所以我需要n = new Tree(x); 是指向树的新对象的指针,并将此指针添加到[i]位置的tab并将此指针添加到tab [i-1]元素的子代。 此代码有什么问题? 这些行不能编译:
n = new Tree(x);
tab[i] = n;
有错误:
- 行:不能将类型为“树*”的值分配给类型为“ int”的实体。
- 行:不能将值“ int”的值分配给“树*”类型的实体。
首先,您将n
声明为int
。 稍后,您将n
声明为Tree*
。
这两个声明冲突,因为它们试图用两种不同的类型声明同一变量。 为避免冲突,请使用两个不同的变量名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.