【发布时间】:2014-06-08 18:27:21
【问题描述】:
我用 C++ 为 BST 和队列编写了类。
我必须以预排序方式遍历 BST,并在遍历到队列后添加(放置)值。值是段(几何对象)的其他类。 BST 遍历和添加到队列函数是分开工作的。
但是我的值没有被推入队列。
这是我遍历 BST 的代码:
//Prefix traversal functions
template <class T>
queue<T> Binary_tree <T>::prefix_trav(queue<T> abc, node *Bnode) {
if (Bnode != NULL) {
abc.addQ (Bnode - data);
prefix_trav (abc, Bnode-leftChild);
prefix_trav (abc, Bnode-rightChild);
}
return abc;
}
template <class T>
queue<T> Binary_tree <T>::prefix_trav() {
queue<T> abc;
abc = prefix_trav (abc, root);
return abc;
}
每次我遍历树的一个元素时,我都会将它添加(放入)到队列中。
template (class T)
void queue<T>::addQ(T addData) {
node *n = new node;
n-data = addData;
n-next = NULL;
size++;
if (isEmpty()) {
first = n;
last = n;
} else {
n-next = last;
last = n;
}
cout<<"element "<<getSize()<<" has been added"<<endl;
}
但只有根节点被添加到队列中。
【问题讨论】:
标签: c++ queue binary-search-tree