繁体   English   中英

每个节点具有恒定时间的C ++树

[英]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;

有错误:

  1. 行:不能将类型为“树*”的值分配给类型为“ int”的实体。
  2. 行:不能将值“ int”的值分配给“树*”类型的实体。

首先,您将n声明为int 稍后,您将n声明为Tree*

这两个声明冲突,因为它们试图用两种不同的类型声明同一变量。 为避免冲突,请使用两个不同的变量名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM