c语言数据结构题,求大神

如题所述

// äºŒå‰æ ‘的先序遍历序列: E A C B D G F
// äºŒå‰æ ‘的中序遍历序列: A B C D E G F
// äºŒå‰æ ‘的后序遍历序列: B D C A F G E

#include "stdio.h"
#include "stdlib.h"
struct tree
{
    char data;
    struct tree *left;
    struct tree *right;
};
typedef struct tree treenode;
typedef treenode *btree;

btree createbtree(char *data,int pos,int maxPos) //递归创建法
{
    btree newnode;

    if(data[pos]==0 || pos>maxPos)
    {
        return NULL;
    }
    else
    {
        newnode=(btree)malloc(sizeof(treenode));
        newnode->data=data[pos];
        newnode->left=createbtree(data,2*pos,maxPos);
        newnode->right=createbtree(data,2*pos+1,maxPos);
        return newnode;
    }
}

void inorder(btree ptr)
{
    if(ptr!=NULL)
    {
        inorder(ptr->left);
        printf("%C ",ptr->data);
        inorder(ptr->right);
    }
}

void preorder(btree ptr)
{
    if(ptr!=NULL)
    {
        printf("%C ",ptr->data);
        preorder(ptr->left);
        preorder(ptr->right);
    }
}

void postorder(btree ptr)
{
    if(ptr!=NULL)
    {
        postorder(ptr->left);
        postorder(ptr->right);
        printf("%C ",ptr->data);
    }
}

int main()
{
    btree root=NULL;
    int i;

    char data[16]={0,'E','A','G',0,'C',0,'F',0,0,'B','D',0,0,0,0};
    root=createbtree(data,1,15);
    printf("二叉树的顺序存储内容: ");
    for(i=1;i<16;i++)
    {
        if(data[i]==0)
        {
            printf("^ ");
        }
        else
        {
            printf("%C ",data[i]);
        }
    }

    printf("\n二叉树的先序遍历序列: ");
    preorder(root);
    printf("\n二叉树的中序遍历序列: ");
    inorder(root);
    printf("\n二叉树的后序遍历序列: ");
    postorder(root);

    printf("\n");
    return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答