关于2叉树 这程序是什么有关问题(急(
关于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叉树~!~!~~~~~
------解决方案--------------------
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct node
{
char data;
struct node *rchild,*lchild;
}node;
node *creattree(node *&root)//参数类型应为node *&,因为构建的树需要保存!
{
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 -> data;//输出数据域,lchild改为data
outtree(root-> lchild);
outtree(root-> rchild);
}
}
int main()
{
node *root;//原来的*head多余!
//head = (node*)malloc(sizeof(node));
root = (node*)malloc(sizeof(node));
//root-> lchild =root-> rchild = 0;//这句是多余的!
cout < < "please enter data of the tree: " < <endl;
root = creattree(root);
outtree(root);
return 1;
}
如对我说的 "参数类型应为node *&,因为构建的树需要保存! "有疑问的话,可以参考下贴:
http://community.****.net/Expert/topic/5528/5528213.xml?temp=.7316095
------解决方案--------------------
二叉树没有建成功
参数类型应为node *&,把指针传进去,按照你写的,返回时候root仍然是指向NULL,不信可以调试
同意LS的
------解决方案--------------------
函数的参数除了数组和引用都是不传递的
但是函数的返回了指针,虽然root变了(我认为变了,main中,root = creattree(root))
但是他的左右儿子没有接受返回值,所以大概root不为空,但没有左右儿子吧.
指针初值的处理在不同编译器上好象不大一样,建议在申请空间时将指针置空
------解决方案--------------------
先mark,改天看看
------解决方案--------------------
#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叉树~!~!~~~~~
------解决方案--------------------
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct node
{
char data;
struct node *rchild,*lchild;
}node;
node *creattree(node *&root)//参数类型应为node *&,因为构建的树需要保存!
{
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 -> data;//输出数据域,lchild改为data
outtree(root-> lchild);
outtree(root-> rchild);
}
}
int main()
{
node *root;//原来的*head多余!
//head = (node*)malloc(sizeof(node));
root = (node*)malloc(sizeof(node));
//root-> lchild =root-> rchild = 0;//这句是多余的!
cout < < "please enter data of the tree: " < <endl;
root = creattree(root);
outtree(root);
return 1;
}
如对我说的 "参数类型应为node *&,因为构建的树需要保存! "有疑问的话,可以参考下贴:
http://community.****.net/Expert/topic/5528/5528213.xml?temp=.7316095
------解决方案--------------------
二叉树没有建成功
参数类型应为node *&,把指针传进去,按照你写的,返回时候root仍然是指向NULL,不信可以调试
同意LS的
------解决方案--------------------
函数的参数除了数组和引用都是不传递的
但是函数的返回了指针,虽然root变了(我认为变了,main中,root = creattree(root))
但是他的左右儿子没有接受返回值,所以大概root不为空,但没有左右儿子吧.
指针初值的处理在不同编译器上好象不大一样,建议在申请空间时将指针置空
------解决方案--------------------
先mark,改天看看
------解决方案--------------------