|  | 
 
| 
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  复制代码#include<stdio.h>
#include<stdlib.h>
typedef struct BiNode
{
        char data;
        struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
void preOrderTraverse(BiTree T);
void creatTree(BiTree *tree);
int main()
{
        BiTree tree1=NULL;
        BiTree tree2=NULL;
        printf("please enter the first tree:");
        creatTree(&tree1);
        printf("over");
        preOrderTraverse(tree1);
        
        printf("\nplease enter the second tree:");
        creatTree(&tree2);
        printf("over");
        preOrderTraverse(tree2);
        return 0;
}
void preOrderTraverse(BiTree T)
{
        if(NULL==T)
                return;
        
        printf("%c",T->data);
        preOrderTraverse(T->lchild);
        preOrderTraverse(T->rchild);
}
void creatTree(BiTree *tree)
{
        char c;
        scanf("%c",&c);
        if(' '==c)
        {
                *tree=NULL ;
        }
        else
        {
                *tree=(BiTree)malloc(sizeof(BiNode));
                (*tree)->data=c;
                creatTree(&(*tree)->lchild);
                creatTree(&(*tree)->rchild);                
        }
        return;
}
 为什么创建tree2的时候,如果输入和第一次一样的值结束不了递归,要多加两个“##”?
 
指针引用错误,creatTree函数体中指针tred全部不需要解引用,你这个函数是不能创建树的,这个递归要输入空格才能结束,输入空格之后tree指向NULL了,所以函数返回后tree也是指向NULL | 
 |