首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于创建二叉树遍历它的有关问题

2012-04-22 
关于创建二叉树遍历它的问题代码如下:#includeiostreamusing namespace stdtypedef struct BiTNode{cha

关于创建二叉树遍历它的问题
代码如下:

#include<iostream>
using namespace std;
typedef struct BiTNode
{
char data;
struct BiTNode * lchild;
struct BiTNode * rchild;
};

void Create(struct BiTNode *&T)
{

char ch;
cin>>ch;
if(ch == '@')
T = NULL;
else
{
T = new BiTNode;?
T->data = ch;
Create(T->lchild );
Create(T->rchild );
}
}

void InOrder(struct BiTNode *T)
{
if(T!=NULL)
{
InOrder(T->lchild );
cout<<T->data <<endl;
InOrder(T->rchild );
}
}

int main(void)
{
? //BiTNode *T = (BiTNode*)malloc(sizeof(BiTNode));
? BiTNode *T;
cout<<"请输入节点内容:\n"<<endl;

? Create(T);
InOrder(T);
system("pause");
return 0;
}


第一个问题:这样不报错,咋就是没法把遍历后的打印出来恁?
第二个问题:我屏蔽的那句话错在哪啊?
第三个问题:struct BiTNode *&T,这看不懂,有木有什么教材啥的分享给我看看指


[解决办法]
第一个问题:可以打印出来的。我估计是你不会正确的输入。
第二格问题:那句话没有什么错误,不过由于你的节点是在Create函数中创建的,所以只需要传递一个BiTNode的指针进去就可以了。
第三个问题:这个语句的意思是:T是结构体BiTNode指针的引用。
你没有学过C的话就先去看看基础的C教材吧。
[解决办法]
看来楼主对指针的引用还木有理解清楚,偶帮你修改了一下这样是可以的。。

C/C++ code
#include<iostream>using namespace std;//二叉树结点的描述typedef struct BiTNode{    char data;    struct BiTNode *lchild, *rchild;      //左右孩子}BiTNode,*BiTree;void CreateBiTree(BiTNode* &T)      //引用类型的参数{    char ch; //要插入的数据    cin>>ch;    if(ch=='#')        T = NULL;    else    {        T = new BiTNode;        T->data = ch;        printf("请输入%c的左孩子:",ch);        CreateBiTree(T->lchild);        printf("请输入%c的右孩子:",ch);        CreateBiTree(T->rchild);    }}//中序遍历的算法程序void InOrder(BiTNode *T){    if(T == NULL)        return ;    InOrder(T->lchild);    //递归调用,前序遍历左子树    cout<<T->data<<" ";    InOrder(T->rchild); //递归调用,前序遍历右子树}int main(void){    BiTNode *root=NULL; //定义一个根结点    CreateBiTree(root);    InOrder(root);    cout<<endl;    system("pause");    return 0;} 

热点排行