TK867 2020-08-12 22:20 采纳率: 0%
浏览 70

数据结构二叉树顺序实现代码问题

用数据结构二叉树代码顺序实现的时候,无法编译成功,不知道怎么引用、用指针,结构体数组怎么引入函数,求解!

#include<stdio.h>
#define Maxsize 1000
typedef struct TNode{
    int value;
    bool isEmpty;
}TNode;
TNode t[Maxsize];
void Initbitree(TNode&);
bool Createbitree(TNode&,int);
void print(TNode);
bool Preorder(TNode,int);

int main()
{
    Initbitree(t);
    int e;
    printf("输入根节点数值:\n");
    scanf("%d",&e);
    Createbitree(t,e);
    int i;
    printf("输入开始遍历位:\n");
    scanf("%d",&i);
    printf("先序遍历:\n"); 
    Preorder(t, i);


    return 0;
}

void Initbitree(TNode &T)
{
    for(int i=0;i<Maxsize;i++)
    T[i].isEmpty=true; 
}
void Creatbitree(TNode &T,int e)
{
    T[1].value=e;
    T[1].isEmpty=false;
}
void print(TNode T,int i)
{
    printf("打印树节点:%d\n",T[i].value);
}
//先序遍历
bool Preorder(TNode T,int i)
{
    if(T[i].isEmpty==false)
    print(T,i);
    if(T[2i].isEmpty==false)
    Preorder(T,2i);
    if(T[2i+1].isEmpty==false)
    Preorder(T,2i+1); 
    return true;
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-08-12 23:29
    关注
    #include<stdio.h>
    #define Maxsize 1000
    typedef struct TNode{
        int value;
        bool isEmpty;
    }TNode;
    TNode t[Maxsize];
    void Initbitree(TNode*);
    void Createbitree(TNode*,int);
    void print(TNode*);
    bool Preorder(TNode*,int);
    
    int main()
    {
        Initbitree(t);
        int e;
        printf("输入根节点数值:\n");
        scanf("%d",&e);
        Createbitree(t,e);
        int i;
        printf("输入开始遍历位:\n");
        scanf("%d",&i);
        printf("先序遍历:\n"); 
        Preorder(t, i);
    
    
        return 0;
    }
    
    void Initbitree(TNode *T)
    {
        for(int i=0;i<Maxsize;i++)
        T[i].isEmpty=true; 
    }
    void Createbitree(TNode *T,int e)
    {
        T[1].value=e;
        T[1].isEmpty=false;
    }
    void print(TNode* T,int i)
    {
        printf("打印树节点:%d\n",T[i].value);
    }
    //先序遍历
    bool Preorder(TNode* T,int i)
    {
        if(T[i].isEmpty==false)
        print(T,i);
        if(T[2*i].isEmpty==false)
        Preorder(T,2*i);
        if(T[2*i+1].isEmpty==false)
        Preorder(T,2*i+1); 
        return true;
    }
    

    问题解决的话,请点下采纳

    评论

报告相同问题?