二叉树

(不是太太太理解)

1、结构体定义

1
2
3
4
5
typedef struct BiTNode
{
    TElemType data;
    struct BiTNode *lchild, *rchild;
}BiTNode;

2、构造二叉树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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、各种递归遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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、置空二叉树

1
2
3
4
5
6
7
8
9
10
11
//置空二叉树
void BiTreeSetNull(BiTNode *tree)
{
    if(tree == NULL)
    {
        return ;
    }
    BiTreeSetNull(tree->lchild);
    BiTreeSetNull(tree->rchild);
    free(tree);
}

 5、主函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 @   风中凌乱的猪头  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示