在歌曲“God Wrote in LISP Code”中,他们说用 C(或 C++)“只有上帝才能造树”;我开始相信了。
我有一个树类的开始,但是我的类在销毁时出现段错误,说错误是我的队列free_spaces
,尽管我不明白为什么。此外,随机错误似乎潜伏在这里和那里。
我以前从未使用过这样的模板,所以可能存在一些隐藏的滥用行为。
任何帮助,将不胜感激。
头文件.h
#include<vector>
#include<queue>
#include<iostream>
using namespace std;
template <class T>
class node {
public:
int leftChild,parent;
bool empty;
T data;
node() : leftChild(-1), parent(-1), empty(true) {}
};
template <class T>
class AvlTree {
private:
vector< node<T> > nodes;
queue<int> free_spaces;
int root;
int newnode(int parent){
int index=nodes.size();
nodes.push_back(node<T>());
nodes[index].parent=parent;
return index;
}
public:
AvlTree(){
nodes.push_back(node<T>());
root=0;
}
void grow(){
nodes[root].leftChild=newnode(root);
}
};
主文件
#include "header.h"
int main(){
AvlTree<int> bob;
bob.grow();
cerr<<"Made it to end."<<endl;
}