节点实现二叉树
Node implementation Binary Tree
我对节点类有以下实现:
template<class T> class binTree; // forward declaration
template<class T> class Node {
friend class binTree<T>; // class binTree is friend
public:
//default constructor
Node(const T& d = T(), Node<T> *l = NULL, Node<T> *r = NULL) : data(d),
left(l), right(r) {};
private:
T data;
Node<T> *left, *right;
};
我正在尝试为我的树的根定义一个新节点,但我不断收到编译错误......
template<class T>
void binTree<T>::insert(Node<T>*& n, const T& d){
if(n == NULL)
root = Node<T>(d);
}
我对const T& d = T() parameter
感到困惑.
我认为您只需要在尝试定义成员之前声明 binTree 类及其成员。以下代码为我编译:
#include <cstdlib>
template<class T> class binTree; // forward declaration
template<class T> class Node {
friend class binTree<T>; // class binTree is friend
public:
//default constructor
Node(const T& d = T(), Node<T> *l = NULL, Node<T> *r = NULL) : data(d),
left(l), right(r) {};
private:
T data;
Node<T> *left, *right;
};
template <class T> class binTree
{
public:
binTree() { }
void insert(Node<T>*& n, const T& d);
private:
Node<T> root;
};
template<class T>
void binTree<T>::insert(Node<T>*& n, const T& d){
if(n == NULL)
root = Node<T>(d);
}
int main(int argc, char **argv)
{
Node<int>* nt;
binTree<int> btree;
btree.insert(nt, 4);
}
话虽如此,您对数据结构的概念似乎一团糟。为什么 binTree 中的插入例程需要节点参数?
我不太确定为什么在默认构造函数中对 d 变量进行默认覆盖。在我为 Tree 类实现节点时,我没有默认赋值。我认为问题是 T()。我建议不要尝试在参数列表中执行该默认分配,而是在BMI列表中执行此操作。所以它看起来有点像"data(new T),left(NULL),right(NULL)"
另外,我想说我不太确定你为什么使用T()。如果这不起作用,请发布错误代码,以便我们更好地了解正在发生的事情。
相关文章:
- 从父数组测试用例构造二叉树失败
- 打印时有二叉树问题.用户输入不打印任何内容
- 试图找到二叉树的深度
- 二叉树结构平衡,使用递归时EXC_BAD_ACCESS
- 指向二叉树中新节点的指针
- 我试图用这段代码找到二叉树的高度,但它一直返回 0,有人可以告诉我为什么吗?
- 语言分析的二叉树实现 - 子节点:不起作用
- 按C++实现二叉树
- C++二叉树打印函数实现
- C++ 二叉树实现 - 删除指针原因
- 尝试实现通过引用传递的向量以与二叉树一起使用,我错过了什么
- 二叉树实现C++
- 二叉树实现 - 分支上的数字被替换
- 尝试实现二叉树时的分段错误
- 二叉树搜索的实现和函数声明c++
- 二叉树访谈:实现跟随操作
- 节点实现二叉树
- 基于 STL deque 的树与自己的二叉树实现
- 二叉树的示例实现不适用于大量值
- 二叉树类的实现