二叉树

(不是太太太理解)

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;
}

  

 

posted @ 2023-06-07 19:46  风中凌乱的猪头  阅读(22)  评论(0)    收藏  举报