二叉树的代码实现

   二叉树是一种非线性的结构,但是在计算机中存储时,却要按照线性来存储。二叉树也是由一个一个结点构成,只不过是,一个结点中既要存放数据,又要存放左孩子的指针和右孩子的指针。所以,我们想要实现二叉树,首先就得有一个二叉树的结构,根据刚才的分析,那么二叉树结构中的变量应该要有三个。代码如下:

站在用户的角度思考问题,与客户深入沟通,找到罗庄网站设计与罗庄网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名网站空间、企业邮箱。业务覆盖罗庄地区。

struct BiTNode{

    int data;
    struct BiTNode *lchild;
    struct BiTNode *rchild;
};

   有了这么一个二叉树的结构之后,我们可以开始动态的创建结点。比如,我们要创建的这棵树有5个元素,A、B、C、D、E。那么,创建结点的代码如下:

struct BiTNode *A = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) );
struct BiTNode *B = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) );
struct BiTNode *C = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) );
struct BiTNode *D = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) );
struct BiTNode *E = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) );

接下来,就是要对这些结点进行初始化,并且生成一棵树。这棵树,先序遍历结果为:

A->B->C->D->E

中序遍历结果为:

B->A->D->C->E

有了树的理论上的形状之后,我们要开始对这些结点进行联接。代码如下:

A->data = 'A';
A->lchild = B;
A->rchild = C;
B->data = 'B';
B->lchild = B->rchild = NULL;
C->data = 'C';
C->lchild = D;
C->rchild = E;
D->data = 'D';
D->lchild = D->rchild = NULL;
E->data = 'E';
E->lchild = E->rchild = NULL;

二叉树创建好之后,就是要开始遍历二叉树了。二叉树的遍历有三种,前序,中序和后序。二叉树的遍历事实上是通过递归实现的。那么,先来实现,先序遍历。代码如下:

void PreOrderTraverse ( struct BiTNode *T ){

    if ( T == NULL )
        return;
        
    if ( T != NULL )
    printf ( "%c", T->data );     //先访问根结点
    if ( T != NULL )
    PreOrderTraverse ( T->lchild );  //访问左子树
    if ( T != NULL )
    PreOrderTraverse ( T->rchild );   //访问右子树
    
}

接着是中序遍历,中序遍历不过是先访问左子树,再访问根结点,最后访问右子树。代码如下:

void InOrderTraverse ( struct BiTNode *T ){

    if ( T == NULL )
        return;
        
    if ( T != NULL )
        InOrderTraverse ( T->lchild );
    if ( T != NULL )
        printf ( "%c", T->data );
    if ( T != NULL )
        InOrderTraverse ( T->rchild );

}

最后一种,就是后序遍历。后序遍历就是先访问左子树,再访问右子树,最后访问根结点。代码如下:

void PostOrderTraverse ( struct BiTNode *T ){

    if ( T == NULL )
        return;
        
    if ( T != NULL )
        PostOrderTraverse ( T->lchild );
    if ( T != NULL )
        PostOrderTraverse ( T->rchild );
    if ( T != NULL )
        printf ( "%c", T->data );

}

网页题目:二叉树的代码实现
当前网址:https://www.cdcxhl.com/article36/ihsisg.html

成都网站建设公司_创新互联,为您提供网站设计域名注册建站公司自适应网站服务器托管网站收录

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名