鍍金池/ 問答/C  C++/ 遍歷二叉樹時輸出順序出錯先序遍歷沒問題但中序遍歷和后序遍歷出錯

遍歷二叉樹時輸出順序出錯先序遍歷沒問題但中序遍歷和后序遍歷出錯

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);
}

}
圖片描述

回答
編輯回答
陪她鬧

中序遍歷和后序遍歷里面你調(diào)用的是先序遍歷函數(shù), 當(dāng)然會錯...
另外, 用markdown把代碼貼貼好.

2017年12月8日 12:19