遍历二叉树时输出顺序出错先序遍历没问题但中序遍历和后序遍历出错

include<stdio.h>

include<malloc.h>

typedef struct BiTNode{

int data;
struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

void CreateBiTree(BiTNode *&root);
void PreorderShow(BiTNode *root);
void InorderShow(BiTNode *root);
void PostorderShow(BiTNode *root);

int main()
{

BiTree root;
CreateBiTree(root);    
PreorderShow(root);
printf("\n");    
InorderShow(root);

// printf("n");
/// PostorderShow(root);

return 0;

}

void CreateBiTree(BiTree &root)
{

int ch;
scanf("%d",&ch);
if(ch==0)
    root=NULL;
else
{
    root=(BiTNode*)malloc(sizeof(BiTNode));
    root->data=ch;
    CreateBiTree(root->lchild);
    CreateBiTree(root->rchild);
}

}

void PreorderShow(BiTNode *root)
{

if(root)
{
    printf("%d",root->data);
    PreorderShow(root->lchild);
    PreorderShow(root->rchild);
}

}

void InorderShow(BiTNode *root)
{

if(root)
{
    PreorderShow(root->lchild);    
            
    printf("%d",root->data);
    
    PreorderShow(root->rchild);
}

}

void PostorderShow(BiTNode *root)
{

if(root)
{
    PreorderShow(root->lchild);
    PreorderShow(root->rchild);
    printf("%d",root->data);
}

}
图片描述

阅读 2.5k
1 个回答

中序遍历和后序遍历里面你调用的是先序遍历函数, 当然会错...
另外, 用markdown把代码贴贴好.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题