问题描述
如何在向树添加节点之前正确初始化空的红黑树?
我的结构:
enum class Colour
{
RED,BLACK
};
struct Node
{
Node *parent = nullptr;
Node *leftChild = nullptr;
Node *rightChild = nullptr;
Colour colour = Colour::RED;
T element = T();
};
Node *root = nullptr;
Node *nilNode = nullptr;
我的构造函数:
RedBlackTree()
{
nilNode = new Node();
nilNode->colour = Colour::BLACK;
root = nilNode;
}
当创建一棵空树时,nilnode 应该是黑色的,所有红色节点都应该有黑色的子节点——但是,向树添加节点是行不通的。我已经尝试在我的 addnode 函数中使用 root = new Node()
但正如预期的那样,程序崩溃了,我知道 root 已经指向我的构造函数中的 nilNode 。我在 delete root
之前也用 root = new Node()
进行了测试,它不再崩溃,但不会打印出树的节点。我在这里遗漏了什么重要的东西吗?
template <typename T>
bool RedBlackTree<T>::addNewNode(const T &val)
{
//delete root;
//root = new Node(); <-- if I don't use delete root before this line,the program crashes.
//root->element = val; <-- I only use tree.addNewNode(5) in my main for test purpose.
return true;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)