YaYa很开心 2022-11-04 18:34 采纳率: 81.3%
浏览 11

二叉树的建立与非递归遍历

我的没有输出

img

#include <stdio.h>
#include <malloc.h>
typedef struct Tree
{
    char data;
    struct Tree* lchild;
    struct Tree* rchild;
}Tree,*BiTree;

typedef struct
{
    int top;
    BiTree data;
}Stack,*Seqstack;

Seqstack Initstack()
{
    Seqstack s = (Seqstack)malloc(sizeof(Stack));
    if(s==NULL) return 0;
    else
    {
        s->top = -1;   
    }
    return s;
}

void Push(Seqstack s,Tree p)
{
    s->top++;
    s->data[s->top] = p;
}

int IsEmpty(Seqstack s)
{
    if(s->top ==-1) return 1;
    else return 0;
}

void Pop(Seqstack s,BiTree p)
{
    if(s->top == -1) return;
    *p = s->data[s->top];
    s->top--;
}

BiTree Create()
{
    BiTree T;
    char data;
    data = getchar();
    if(data == '#') T = NULL;
    else
    {
        T = (BiTree)malloc(sizeof(Tree));
        T->data = data;
        T->lchild = Create();
        T->rchild = Create();
    }
    return T;
}

void Preorder(BiTree T)
{
    Seqstack s;
    BiTree p = T;
    s = Initstack();
    while (p != NULL && !IsEmpty(s))
    {
        while(p!=NULL)
        {
            printf("%c",p->data);
            Push(s,*p);
            p = p->lchild;
        }
        if(!IsEmpty(s))
        {
            Pop(s,p);
            p = p->rchild;
        }
    }
}

void Inorder(BiTree T)
{
    Seqstack s;
    BiTree p;
    p = T;
    s = Initstack();
    while (p != NULL && !IsEmpty(s))
    {
        while (p!=NULL)
        {
            Push(s,*p);
            p = p->lchild;
        }
        if(!IsEmpty(s))
        {
            Pop(s,p);
            printf("%c",p->data);
            p = p->rchild;
        }
    }
}

int main()
{
    BiTree T = Create();
    Preorder(T);
    printf("\n");
    Inorder(T);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-04 20:13
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 11月4日

悬赏问题

  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 NRF24L01能发送但是不能接收
  • ¥15 想问一下这种情况怎么解决呢(关键词-file)
  • ¥15 python Flassk 模块部署 服务器时报错
  • ¥15 Opencv(C++)异常