求解:先序建立二叉树,并中序遍历二叉树。我不知道哪错了。。。

#include <iostream.h>#include <stdlib.h>#include<stdio.h> typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;//左右子树指针}BiTNode;typedef BiTNode *BiTree;void CreateBiTree(BiTree *T){ char ch; for(int c=0;c<=5;c++){ cout<<"请输入一个字符:"<<endl; cin>>ch; *T=(BiTNode *)malloc(sizeof(BiTNode)); (*T)->data=ch; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); }}int Visit(char e){ return e;}void InOrderTraverse(BiTNode *T){ if(T){ Visit(T->data); InOrderTraverse(T->lchild); InOrderTraverse(T->rchild); } printf("%",T->data);}void main(){ BiTree root; CreateBiTree(&root); InOrderTraverse(root);}我又改了下,这样就没有错误可以运行了,但是我觉得还是不太对劲,不知道这样是不是真的对...请高手帮我看看哈~~~#include <iostream.h>#include <stdlib.h>#include<stdio.h> typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;⼀⼀左右子树指针}BiTNode;typedef BiTNode *BiTree;void CreateBiTree(BiTree *T){ char ch; if(ch!=0){ *T=(BiTNode *)malloc(sizeof(BiTNode)); (*T)->data=ch; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); }}void Visit(char e){ printf("%",e);}void InOrderTraverse(BiTNode *T){ if(T){ Visit(T->data); InOrderTraverse(T->lchild); InOrderTraverse(T->rchild); } printf("%",T->data);}void main(){ BiTree root; CreateBiTree(&root); InOrderTraverse(root);}
2026年09月25日 06:00
有2个网友回答
网友(1):

#include
#include
#include
using namespace std;

typedef struct BiTNode{
char data;
struct BiTNode* lchild;
struct BiTNode* rchild;//左右子树指针
}BiTNode;

//创建二叉树
void CreateBiTree(BiTNode*& pRoot) {
int ch=_getch();
if(ch==' ')
pRoot=NULL;
else {
cout << (char)ch << endl;
pRoot=(BiTNode*)malloc( sizeof(BiTNode));
pRoot->data=ch;
pRoot->lchild = NULL;
pRoot->rchild = NULL;
CreateBiTree(pRoot->lchild);
CreateBiTree(pRoot->rchild);
}
}

void InOrderTraverse(BiTNode* pRoot)
{
if(pRoot){
InOrderTraverse(pRoot->lchild);
cout << pRoot->data << endl;
InOrderTraverse(pRoot->rchild);
}
}
void main(){
BiTNode* root = NULL;
cout << "请按先序正确输入二叉树(空格为空树):" << endl;
CreateBiTree(root);
cout << "二叉树中序遍历:" << endl;
InOrderTraverse(root);
}

网友(2):

首先是递归的问题,你那样子设计是个死循环
然后是你对指针的理解的问题,再好好看看书尝试理解一下吧。
代码很别扭