遍历二叉树时输出顺序出错先序遍历没问题但中序遍历和后序遍历出错
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);
}
}
回答:
中序遍历和后序遍历里面你调用的是先序遍历函数, 当然会错...
另外, 用markdown把代码贴贴好.
以上是 遍历二叉树时输出顺序出错先序遍历没问题但中序遍历和后序遍历出错 的全部内容, 来源链接: utcz.com/p/191181.html