|
发表于 2022-2-5 17:44:23
|
显示全部楼层
- $ cat main.c
- #include <stdio.h>
- #include <stdlib.h>
- #define elemtype char
- typedef struct bitnode {
- elemtype data;
- struct bitnode *l_child, *r_child;
- } bitnode, *bi_Tree;
- void pre_traverse(bi_Tree T) {
- if(T == NULL) return;
- printf("%d\n", T->data); //对结点的操作
- pre_traverse(T->l_child); //先序遍历左子树
- pre_traverse(T->r_child); //后序遍历右子树
- }
- void create_bi_Tree(bi_Tree *T) {
- elemtype ch = getchar();
- if(ch == '#') {
- *T = NULL; return;
- }
- *T = malloc(sizeof(**T));
- (*T)->data = ch;
- create_bi_Tree(&(*T)->l_child);
- create_bi_Tree(&(*T)->r_child);
- }
- // 释放内存的函数一定一定一定要写
- // 不写这个函数会导致内存泄漏
- // 内存泄漏是一个非常非常非常严重的问题
- // 非常的严重
- // 非常的严重
- // 非常的严重
- void free_tree(bi_Tree T) {
- if(!T) return;
- free_tree(T->l_child);
- free_tree(T->r_child);
- free(T);
- }
- int main() {
- bi_Tree T;
- create_bi_Tree(&T);
- pre_traverse(T);
- free_tree(T);
- return 0;
- }
- $ gcc-debug -o main main.c
- $ ./main
- abc##d##e##
- 97
- 98
- 99
- 100
- 101
- $
复制代码 |
|