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

时间:2012-02-26 16:23:15

标签: c++ arrays pointers tree

我正在使用树。每个节点都有Tree *值的对象。我读了看起来像的数据:

1
2
2
...

这意味着,把1作为0的孩子,把2作为1的孩子,把3作为孩子o 2.以常规形式:把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 [i-1]元素的子项。怎么了? 这段代码? 那些行不编译:

n = new Tree(x);
tab[i] = n;

有错误:

  
      
  1. line:值ot类型“Tree *”不能分配给“int”类型的实体。
  2.   
  3. line:值ot type“int”不能分配给“Tree *”类型的实体。
  4.   

1 个答案:

答案 0 :(得分:2)

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

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