Я пытаюсь построить двоичное дерево с файлом, и у меня возникают проблемы при настройке родительского элемента для каждого узла дерева. Я знаю, что мне нужно сохранить предыдущий узел дерева, но я не знаю, как это сделать.
Я пытался использовать статическую переменную int с именем count, чтобы определить, является ли родительский узел для узла деревалевое поддерево предыдущего узла дерева или правое поддерево предыдущего узла дерева. Однако я понял, что по сути ничего не назначаю родителю.
typedef struct Treenode
{
int data;
struct Treenode *left, *right, *parent;
} TreeNode, *TreeNodePtr;
static int count = 0;
TreeNodePtr buildTree(FILE * in)
{
int num;
fscanf(in, "%d", &num);
if (num == 0)
return NULL;
TreeNodePtr p = (TreeNodePtr) malloc(sizeof(TreeNode));
TreeNodePtr prev = (TreeNodePtr) malloc(sizeof(TreeNode));
if (count == 0)
p->parent = NULL;
else if (count == 1)
p->parent = prev->left;
else if (count == 2)
p->parent = prev->right;
p->data = num;
count = 1;
prev->left = p->left = buildTree(in);
count = 2;
prev->right = p->right = buildTree(in);
return p;
}