二叉树
(不是太太太理解)
1、结构体定义
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode;
2、构造二叉树
int CreateBTree(BiTNode **tp)//?
{
//构造方法,或者说构造顺序,从左子树开始构造
int x;
printf("please inpyut integer:");
scanf("%d",&x);
if(x<=0)
{
*tp = NULL;//指针为空,树节点中的某个指针为空
return 0;
}
*tp = (BiTNode *)malloc(sizeof(BiTNode));
if(tp == NULL)
{
return 0;
}
(*tp)->data = x;
CreateBTree(&((*tp)->lchild));
CreateBTree(&((*tp)->rchild));
return 1;
}
3、各种递归遍历
void PreOrder(BiTNode *tree)
{
if(tree == NULL)
{
return;
}
printf("%d",tree->data);
PreOrder(tree->lchild);
PreOrder(tree->rchild);
}
//
void MidOrder(BiTNode *tree)
{
if(tree == NULL)
{
return;
}
MidOrder(tree->lchild);
printf("%d",tree->data);
MidOrder(tree->rchild);
}
//
void PostOrder(BiTNode *tree)
{
if(tree == NULL)
{
return;
}
PostOrder(tree->lchild);
PostOrder(tree->rchild);
printf("%d",tree->data);
}
4、置空二叉树
//置空二叉树
void BiTreeSetNull(BiTNode *tree)
{
if(tree == NULL)
{
return ;
}
BiTreeSetNull(tree->lchild);
BiTreeSetNull(tree->rchild);
free(tree);
}
5、主函数
int main()
{
BiTNode *tree = NULL;
printf("Create binary tree:\n");
CreateBTree(&tree);
printf("Pre Order:\n");
PreOrder(tree);
printf("\n");
printf("Mid Order:\n");
MidOrder(tree);
printf("\n");
printf("Post Order:\n");
PostOrder(tree);
printf("\n");
return 0;
}

浙公网安备 33010602011771号