|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|
|