关于二叉树的建立与遍历问题
一个二叉树建立与遍历的程序,无法输出。代码如下(主函数中我为了验证方便只写了一个函数,但是这3个遍历函数我都实验过,都无法输出)输入格式为:6 2 1 0 0 4 3 0 0 0 8 0 0
#include <stdio.h>
#include <stdlib.h>
typedef struct Treenode
{
int data;
struct Treenode *left,*right;
}Tree,*pTree;
void createTree(pTree T)
{
int ch;
printf("请输入字符:");
scanf("%d",&ch);
if(ch==0)
T=NULL;
else
{
T=(pTree)malloc(sizeof(Tree));
T->data=ch;
printf("请输入左子树");
createTree(T->left);
printf("请输入右子树");
createTree(T->right);
}
}
void xianxubianli(pTree T)
{
if(T!=NULL)
{
printf("%d\n",T->data);
xianxubianli(T->left);
xianxubianli(T->right);
}
}
void zhongxubianli(pTree T)
{
if(T!=NULL)
{
zhongxubianli(T->left);
printf("%d\n",T->data);
zhongxubianli(T->right);
}
}
void houxupaixu(pTree T)
{
if(T!=NULL)
{
houxupaixu(T->left);
houxupaixu(T->right);
printf("%d\n",T->data);
}
}
int main()
{
pTree T=NULL;
createTree(T);
zhongxubianli(T);
}
把createTree(pTree T)里面参数改为对指针的引用createTree(pTree &T) TOP_LK 发表于 2018-8-7 10:07
把createTree(pTree T)里面参数改为对指针的引用createTree(pTree &T)
我在结构体定义那里写的是*pTree,这个就代表struct Treenode *,所以这个和加不加&没关系, 而且加上&反而出现语法错误 hhhh还好还好 发表于 2018-8-7 15:42
我在结构体定义那里写的是*pTree,这个就代表struct Treenode *,所以这个和加不加&没关系, 而且加上&反 ...
你要先加上&试试嘛,你不试一下怎么会知道有错,又不是编译器{:10_245:} TOP_LK 发表于 2018-8-7 17:24
你要先加上&试试嘛,你不试一下怎么会知道有错,又不是编译器
额,我没试过肯定不会回复哒,我试过了还多了4个错误QAQ 语法绝对不会有问题,我这儿可以正常运行,应该是编译器的问题
TOP_LK 发表于 2018-8-8 14:15
语法绝对不会有问题,我这儿可以正常运行,应该是编译器的问题
我用的是vc++编译器,而且我有个疑问,pTree T应该和struct Treenode *T 的含义相同呀,为啥还要在pTree后面加一个&呢? &的意思是传进来对节点指针的引用,括号内等价于 TreeNode* &T,目的是让传递进来的指针发生改变,不然 T 仍然为NULL。
页:
[1]