已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
3天前关闭。
Improve this question
最近我在学习数据结构和算法,当我在给我的根BinaryTreeNode的leftChild添加一个leftChild的时候,比如说根节点是a,a的leftChild是b,b的leftChild是d,但是当我在创建节点d的时候,让我吃惊的是数据是b的节点也变成了d,我意识到这是C的指针造成的问题。但我不知道怎么修这是我的代码。
这就是我如何定义BinNode和BinTree
的结构
这些是用于生成节点和添加子节点的函数。
这是我的主要职责
添加根节点的第一个子节点后,根节点的外观如下所示。
添加根节点的第二个子节点后,根节点的外观如下所示。
你能帮我找出这个问题出现的原因和解决的方法吗?
1条答案
按热度按时间sdnqo3pr1#
generateNode
函数在函数作用域中创建一个局部BinNode
,并返回指向它的指针。问题是,当函数结束时,此内存被释放,因此指针指向未分配的内存,从而导致未定义的行为。相反,您应该使用malloc
分配此内存,然后在不再需要时显式地使用free
。