读书人

一个2叉树的小疑点  会的指教一下 

发布时间: 2012-04-10 21:03:56 作者: rapoo

一个2叉树的小问题  会的指教一下  小弟感激不尽
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct node
{
char data;
struct node *rchild,*lchild;
}node;
node *creattree(node *root)
{
char ch;
cin> > ch;
if(ch == ' ')
{
root = NULL;
return root;
}
else
{
root = (node *)malloc(sizeof(node));
root-> data = ch;
creattree(root-> lchild);
creattree(root-> rchild);
return root;
}

}
void outtree(node *root)
{
if(root!=NULL)
{
cout < <root -> lchild;
outtree(root-> lchild);
outtree(root-> rchild);
}
}

int main()
{
node *head,*root;
//head = (node*)malloc(sizeof(node));
root = (node*)malloc(sizeof(node));
//head-> lchild = root,head-> rchild = NULL;
root-> lchild =root-> rchild = 0;
cout < < "please enter data of the tree: " < <endl;
   root = creattree(root);
outtree(root);
return 1;
}


问题描述:

不能打印出 建立的2叉树~!~!~~~~~

[解决办法]
死循环 不停的在添加坐孩子
LZ可以跟踪进去仔细看看
[解决办法]
node *creattree(node **root);

root = creattree(&root);
[解决办法]
void outtree(node *root)
{
if(root!=NULL)
{
cout < <root -> lchild;//这句应该是root-> lchild-> data吧?
cout < <root-> rchild-> data;//这个你也没写.
outtree(root-> lchild);
outtree(root-> rchild);
}
}
[解决办法]
node *creattree(node *root)
{
char ch;
cin> > ch;
if(ch == ' ')
{
root = NULL;
return root;
}
else
{
root = (node *)malloc(sizeof(node));
root-> data = ch;
creattree(root-> lchild);
creattree(root-> rchild);
return root;
}

}你这个递规每次都要一个 ' '才能返回,明显有问题么

读书人网 >C++

热点推荐