本帖最后由 Stubborn 于 2021-5-15 18:54 编辑
我学C没有学多久,不过看你的这个函数
void pushTree(BiTree *root)
root=(struct tree*)malloc(sizeof(struct tree));
你申请下来的root确定不会覆盖传进来的root指针吗?
你确定你申请下来的root节点,"挂“在之前节点的左或者右侧了吗?
#include <stdio.h>
#include <stdlib.h>
#define TElemType int
typedef struct BitNode{
TElemType data;
struct BitNode *left, *right;
}BitNode, *BitTree;
void CreateBiTree(BitTree *);
void DisplayBiTree(BitTree *);
int main(void)
{
BitTree tree;
CreateBiTree(&tree);
DisplayBiTree(&tree);
return 0;
}
void CreateBiTree(BitTree *root)
{
int value = 999;
printf("input data value>>[ ] \b\b");
scanf("%d", &value);
if (value == 999)
{
*root = NULL;
} else
{
*root = (BitTree) malloc(sizeof(BitNode));
(*root)->data = value;
CreateBiTree(&(*root)->left);
CreateBiTree(&(*root)->right);
}
}
void DisplayBiTree(BitTree *root)
{
if (root)
{
printf(" value is > %d", (*root)->data);
DisplayBiTree(&(*root)->left);
DisplayBiTree(&(*root)->right);
}
}
|