C 在构建二叉树时,如何获取树节点的父节点?

C 在构建二叉树时,如何获取树节点的父节点?,c,binary-tree,C,Binary Tree,我正试图用一个文件构建一个二叉树,但在为每个树节点设置父节点时遇到了问题。我知道我需要存储上一个树节点,但我不知道怎么做 我尝试使用名为count的静态int变量来确定树节点的父节点是前一个树节点的左子树还是前一个树节点的右子树。然而,我意识到我基本上没有给父母分配任何东西 typedef结构树节点 { int数据; 结构树节点*左,*右,*父节点; }TreeNode,*TreeNodePtr; 静态整数计数=0; TreeNodePtr构建树(文件*in) { int-num; fscanf

我正试图用一个文件构建一个二叉树,但在为每个树节点设置父节点时遇到了问题。我知道我需要存储上一个树节点,但我不知道怎么做

我尝试使用名为count的静态int变量来确定树节点的父节点是前一个树节点的左子树还是前一个树节点的右子树。然而,我意识到我基本上没有给父母分配任何东西

typedef结构树节点
{
int数据;
结构树节点*左,*右,*父节点;
}TreeNode,*TreeNodePtr;
静态整数计数=0;
TreeNodePtr构建树(文件*in)
{
int-num;
fscanf(在“%d”中,&num);
如果(num==0)
返回NULL;
TreeNodePtr p=(TreeNodePtr)malloc(sizeof(TreeNode));
TreeNodePtr prev=(TreeNodePtr)malloc(sizeof(TreeNode));
如果(计数=0)
p->parent=NULL;
否则如果(计数=1)
p->parent=prev->left;
否则如果(计数=2)
p->parent=prev->right;
p->data=num;
计数=1;
prev->left=p->left=buildTree(在中);
计数=2;
prev->right=p->right=buildTree(在中);
返回p;
}

-请阅读什么是
TreeNodePtr
?这是一种非常不寻常的尝试构建树的方法。如果文件中有几百万条记录,会发生什么?你的递归太深了。您应该为此使用迭代代码;答案通常是“否”,函数指针除外。