浜屽弶鏍戯細
榪斿洖緇撴灉濡備笅錛?br />
瀹屾暣浠g爜濡備笅錛?br /> #include <stdio.h>
//鏍戠粨鏋?/span>
typedef struct tree {
char data;
struct tree *lchild, *rchild;
} tree;
//鍒涘緩鏍?/span>
struct tree* create_tree() {
char node_data;
scanf("%c", &node_data);
if(node_data == '#') {
return NULL;
} else {
struct tree *T = NULL;
T = (struct tree*)malloc(sizeof(struct tree));
T->data = node_data;
T->lchild = create_tree();
T->rchild = create_tree();
return T;
}
}
//鍏堝簭閬嶅巻
void pre_traverse(struct tree *T) {
if(T == NULL) {
return;
} else {
printf("%c\t", T->data);
pre_traverse(T->lchild);
pre_traverse(T->rchild);
}
}
//涓簭閬嶅巻
void mid_traverse(struct tree *T) {
if(T == NULL) {
return;
} else {
mid_traverse(T->lchild);
printf("%c\t", T->data);
mid_traverse(T->rchild);
}
}
//鍚庡簭閬嶅巻
void aft_traverse(struct tree *T) {
if(T == NULL) {
return;
} else {
aft_traverse(T->lchild);
aft_traverse(T->rchild);
printf("%c\t", T->data);
}
}
//娣卞害
int tree_deepth(struct tree *T) {
int i,j;
if(!T) {
return 0;
} else {
if(T->lchild)
i = tree_deepth(T->lchild);
else
i = 0;
if(T->rchild)
j = tree_deepth(T->rchild);
else
j = 0;
return i > j ? (i + 1) : (j + 1);
}
}
int main(int argc, char **argv) {
struct tree *T = create_tree();
if(T) {
printf("%s\n", "鍏堝簭:");
pre_traverse(T);
printf("\n%s\n", "涓簭:");
mid_traverse(T);
printf("\n%s\n", "鍚庡簭:");
aft_traverse(T);
printf("\n%s\n", "娣卞害:");
int deepth = tree_deepth(T);
printf("%d\n", deepth);
printf("\n");
}
return 0;
}

]]>