每个节点具有恒定时间的C++树
C++ Tree with constant time to each node
我正在处理树。每个节点都有具有Tree*值的对象。我读取的数据看起来像:
1
2
2
...
这意味着,将1作为0的子项,将2作为1的子项;将3作为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=新树(x);是指向树的新对象的指针,并添加此指针到[i]位置的tab,并将此指针添加到tab[i-1]元素的子元素。怎么了这个代码?这些行无法编译:
n = new Tree(x);
tab[i] = n;
有错误:
- 行:不能将"Tree*"类型的值分配给"int"类型的实体
- 行:不能将类型为"int"的值分配给类型为"Tree*"的实体
首先将n
声明为int
。稍后您将n
声明为Tree*
。
这两个声明冲突,因为它们试图用两种不同的类型声明同一个变量。为了避免冲突,请使用两个不同的变量名。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在基于范围的for循环中使用结构化绑定声明
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++ Poco SQL 查询不返回具有'between'和'and'日期时间绑定的结果
- C++17:是编译器为(静态存储持续时间)const引用绑定创建的可修改的临时对象(和存储)
- 模板变量的绑定时间
- 如何判断约束绑定编码的时间限制