不废话,直接上代码解释:
#include<stdio.h>
#include "malloc.h"
typedef char ElemType;
typedef struct BiNode{
ElemType data;
struct BiNode *lchild;
struct BiNode *rchild;
}BiNode,*BiTree;
BiTree preOrderCreateBiTree(){ //先序建立二叉树方法一
char ch;
BiTree T;
scanf("%c",&ch);
if (ch=='#'){
T = NULL;
}
else{
T = (BiTree)malloc(sizeof(BiNode));//!!!是指针类型的节点
T->data = ch;
T->lchild = preOrderCreateBiTree();
T->rchild = preOrderCreateBiTree();
}
return T;
}
void preOrderCreateTree2(BiTree *T){ //这里传进去的是指针的指针,就是指向树根的指针的地址,那么(*T)就是指针的地址了,(*T)是指针
char ch;
scanf("%c", &ch);
if ('#' == ch){
*T = NULL;
}
else{
*T = (BiTree)malloc(sizeof(BiNode));
(*T)->data = ch;
preOrderCreateTree2(&((*T)->lchild));//根据函数定义这里要传地址
preOrderCreateTree2(&((*T)->rchild));
}
}
void preO