简单树插入节点函数显示为空
Simple Tree Insert Node Function turning up Null
我已经实现了这个简单树,但是当我尝试在我的rootNode之后插入时,我不断得到NULL值。调试器显示我的 mValue 为 NULL。谁能告诉我我做错了什么?环顾四周后,我似乎想不通。
class Tree {
public:
Tree()
{
mRootNode = NULL;
}
~Tree()
{
if (mRootNode != NULL)
{
delete mRootNode;
}
}
void PushValues(int value)
{
if (mRootNode == NULL)
{
mRootNode = new TreeNode(value);
}
else
{
mRootNode->PushNodeValues(value);
}
}
void PrintValues()
{
if (mRootNode == NULL)
{
mRootNode->PrintNodeValues();
}
}
private:
class TreeNode
{
TreeNode* mLeft;
TreeNode* mRight;
int mValue;
public:
TreeNode(int value)
{
std::cout << "you are inside the treenode constuctor" << std::endl;
mValue = value;
//mLeft = NULL;
//mRight = NULL;
}
~TreeNode()
{
if (mLeft != NULL)
{
delete mLeft;
}
if (mRight != NULL)
{
delete mRight;
}
}
void PushNodeValues(int value)
{
if (value < mValue)
{
if (mLeft = NULL)
{
mLeft = new TreeNode(value);
}
else
{
mLeft->PushNodeValues(value);
}
}
else
{
if (mRight == NULL)
{
mRight = new TreeNode(value);
}
else
{
mRight->PushNodeValues(value);
}
}
}
void printnodeValue()
{
std::cout << "value is " << mValue << std::endl;
}
void PrintNodeValues()
{
if (mLeft != NULL)
mLeft->PrintNodeValues();
printf("%d, ", mValue);
if (mRight != NULL)
mRight->PrintNodeValues();
printf("%d, ", mValue);
}
};
TreeNode* mRootNode;
};
int main()
{
int data[] = {
60, 36, 25, 44, 62, 58, 25, 66, 84, 48,
1, 63, 6, 58, 40, 73, 30, 100, 88, 60,
100, 73, 77, 55, 6, 33, 69, 4, 93, 33,
36, 53, 79, 2, 35, 41, 64, 76, 70, 81,
55, 22, 20, 44, 93, 58, 14, 6, 60, 36
};
Tree myTree;
for (int i = 0; i < 50; i++)
{
myTree.PushValues(data[i]);
}
myTree.PrintValues();
return 0;
}
树结构中存在一些错误,下面是一个示例代码,说明您应该如何递归保护树中的数据。
注意:这只是我修改的插入功能的基本结构 从您给定的代码中为您服务。您仍然需要添加例外和内容。
TreeNode* PushValues(TreeNode*& node,int key)
{
if (node == NULL)
{
TreeNode *newNode = new TreeNode(key);
return newNode;
}
if (key < node->mValue)
node->mLeft = PushValues(node->mLeft, key);
else if (key > node->mValue)
node->mRight = PushValues(node->mRight, key);
return node;
}
相关文章:
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- C++ 构造函数未显示输出
- 访问和打印元组中的数据,并使用 C++14 使用模板函数显示数据
- 如何修复加载图标()函数不显示图标?
- 提升堆栈跟踪不显示函数名称和行号
- 如何在函数中显示结构数组
- 如何显示函数开始、结束行和函数体?
- 如何使 Clang Complete 显示函数参数
- Visual Studio 2015 Natvis如何显示函数静态变量
- 如何在模型中显示函数的进度条
- 是否有任何工具可以显示函数中的数据依赖关系
- for 循环在显示函数 OpenGL 中调用的函数中不起作用
- GDB:显示函数将我的 {type} 的地址打印为整数——想改成十六进制
- 如何正确实现类的显示函数
- DLL导出查看器显示函数的完整签名-无法从Java调用它们
- 使用复杂的显示函数会阻止glutKeyboardFunc工作
- GDB 不显示函数名称
- c++中LinkedList调用时的显示函数
- 如何在类中显示函数
- 在过剩显示函数中使用对象