m0_56537216 2021-06-02 16:26 采纳率: 100%
浏览 33
已采纳

大佬们帮帮忙改错,几年有好几个错误

#include <stdio.h>

#include <stdlib.h>

 

 #define STACK-INIT-SIZE 100;

#define STACKINCREMENT 10;

#define MAXSIZE 100

int count0 = 0; //计数器 

/**二叉树数据结构定义**/

typedef struct BiTreeNode

{

    char data;

    struct BiTreeNode *left;

    struct BiTreeNode *right;

}BiTreeNode,*BiTree;

 

typedef struct{

  *base;

  *top;

 int stacksize;

}SqStack; 

 

//构造一个空栈 

 InitStack(SqStack &S)

 S.base=(SElemType * )malloc (STACK-INIT-SIZE * sizeof(ElemType));

 if(!S.base)

 exit(OVERFLOW);

 S.top=S.base;

 S.stacksize=STACK-INIT-SIZE;

 return OK;

}

//入栈 

 Status Push(SqList &S,SElemType e)

 if(S.base-S.top>=S.stacksize){

  S.base=(SElemType *)remalloc(S.base,(S.stack+STACKINCREMENT)*sizeof(SElemType));

  if(!S.base) exit(OVERFLOW);

S. top=S.base+S.stacksize;

S. stack+= STACKINCREMENT;

}

* S. top++= e;

return OK;

 }

 //出栈

Status Pop(SqStack &S,SElemType &e){

if( S. top==S.base)

return ERROR;

e=*--S.top;

return OK;

}

 

 

/**二叉树的建立--按照先序方式建立--插入**/

void CreateBiTree(BiTree &T)

{

    char val;

    scanf("%c",&val);

 

    if(val == '#')

        T = NULL; //null表示为空枝

    else

    {

        T = (BiTree)malloc(sizeof(BiTreeNode));

        T->data = val;

        CreateBiTree(T->left);

        CreateBiTree(T->right);

    }

}

 

 

/**先序遍历 根左右**/

void PreOrderTravel(BiTree T)

{

    if(T==NULL)

        return;

    printf("%c ",T->data);

    PreOrderTravel(T->left);

    PreOrderTravel(T->right);

}

 

/**中序遍历 左根右**/

void InOrderTravel(BiTree T)

{

    if(T==NULL)

        return;

    InOrderTravel(T->left);

    printf("%c ",T->data);

    InOrderTravel(T->right);

}

 

/**后序遍历 左右根**/

void TailOrderTravel(BiTree T)

{

    if(T==NULL)

        return;

    TailOrderTravel(T->left);

    TailOrderTravel(T->right);

    printf("%c ",T->data);

}

/* 计算度为0的结点

void CountNode0(BiTree T)

{

 

 

 

} */

 /* 中序遍历非递归*/

 //中序遍历二叉树非递归

Status InOrderTraverse(BiTree T,Status (*Vist)(TElemType)){

InitStack(S);

p= T;

while( p|| ! StackEmpty(S)){

if(p){

Push(S, p);

p= p-> lchild;

}

else{

Pop(S,p)

if(! Vist( p->data))

return ERROR;

p= p->rchild;

}

 

}

return OK

}

 /*求二叉树高度*/

 int height(BiTree T)  

  //int h1;

 // int h2;

  if(T==Null)

    Return 0;

 else{

 int LHeight=height(T->left);

 int RHeight=height(T->right);

 } 

 if(LHeight>RHeight) 

 return(LHeight++);

 else{

  return(RHeight++)

 }

  

  

 

 

 

 

  

}  

int main()

{

 

    printf("测试代码\n");

    BiTree T;

    T = (BiTree)malloc(sizeof(BiTreeNode));

 

    printf("请给二叉树按照先序方式依次输入结点的值(空结点为#):\n");

    CreateBiTree(T);

 

 

    printf("先序方式遍历结果:\n");

    PreOrderTravel(T);

    printf("\n");

    printf("中序方式遍历结果:\n");

    InOrderTravel(T);

    printf("\n");

 

    printf("后序方式遍历结果:\n");

    TailOrderTravel(T);

    printf("\n");

    

// printf("叶子结点结果:\n");

   // CountNode0(T);

   // printf("共%d个\n",count0);

    

    printf("二叉树的高度:%d\n",height(T));

    return 0;

}

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-06-02 16:37
    关注

    #define STACK-INIT-SIZE 100====变量名不能用中横线,只能用下划线

    typedef struct{
        *base;

        *top;

        int stacksize;

    }SqStack;===结构元素的变量类型上哪里去了哈?

    你代码贴的有问题,丢失了很多括号啥的,用上面的“代码段”格式化贴出来吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog