注册 登录
编程论坛 数据结构与算法

运行不出结果,麻烦帮忙看一下吧

专业课的小白 发布于 2020-11-19 00:03, 3770 次点击
基本要求:
1)    用C语言编程描述二叉树存储结构和遍历算法;
2)    编写程序,建立二叉树的存储结构-二叉链表;
3)    编写程序,实现二叉树的前序、中序和后序遍历;
4)    计算二叉树的深度和叶子结点个数。



程序代码:
#include<stdio.h>
#include<stdlib.h>
//二叉树的存储结构,一个数据域,两个指针域
typedef struct bitnode
{
    char data;
    struct bitnode *lchild,*rchild;
}bitnode,*bitree;
//二叉树的先序遍历
void preordertraverse(bitree t)
{
    if(t==NULL)
        return;
    printf("%c",t->data);
    preordertraverse(t->lchild);
    preordertraverse(t->rchild);
}
//二叉树的中序遍历
void inordertraverse(bitree t)
{
    if(t==NULL)
        return;
    inordertraverse(t->lchild);
    printf("%c",t->data);
    inordertraverse(t->rchild);
}
//二叉树的后序遍历
void postordertraverse(bitree t)
{
    if(t==NULL)
        return;
    postordertraverse(t->lchild);
    postordertraverse(t->rchild);
    printf("%c",t->data);
}
void createbitree(bitree *t)
{
    char ch;//输入结点的值(字符型)
    scanf("%c",&ch);
    if(ch=='#')
        *t=NULL;
    else
    {
        *t=(bitree)malloc(sizeof(bitnode));
        if(!*t)
            exit(-1);
        (*t)->data=ch;
        createbitree(&(*t)->lchild);
        createbitree(&(*t)->rchild);
    }
}
//二叉树的深度
int depth(bitree t)
{
    int depthleft,depthright,depthval;
    if(t)
    {
        depthleft=depth(t->lchild);
        depthright=depth(t->rchild);
        depthval=1+
            (depthleft>depthright?depthleft:depthright);
    }
    else
        depthval=0;
    return depthval;
}
int main()
{
    bitree t;
    createbitree(&t);
    preordertraverse(t);
    inordertraverse(t);
    postordertraverse(t);
    depth(t);
    return 0;
}


只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
1 回复
#2
yuccn2020-12-13 23:06
ABD##EG##H##C#FI##J## 改为:
ABD##EG##H##C#FI#J###
1