赞
踩
引言: 数的代码实现, 先序遍历、中序、后序、层次遍历
- /* binary_tree.h */
- #ifndef _BINARY_TREE_H
- #define _BINARY_TREE_H
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #define DEBUG(msg) \
- printf("--%s--, %s\n", __func__, msg);
-
- typedef char data_t;
- typedef struct node {
- data_t data;
- struct node *lnext, *rnext;
- }bitree_t;
-
-
- bitree_t *binary_tree_create();
- void preorder(bitree_t *r);
- void inorder(bitree_t *r);
- void postorder(bitree_t *r);
-
- #endif

- /* binary_tree.c */
- #include "binary_tree.h"
-
- bitree_t *binary_tree_create()
- {
- char ch;
- bitree_t *root = NULL;
-
- scanf("%c", &ch);
- if(ch == '#')
- return NULL;
-
- root = (bitree_t *)malloc(sizeof(bitree_t));
- if(root == NULL) {
- DEBUG("malloc failed");
- return NULL;
- }
-
- root->data = ch;
- root->lnext = binary_tree_create();
- root->rnext = binary_tree_create();
-
- return root;
- }
-
- void preorder(bitree_t *r)
- {
- if(r == NULL) {
- return ;
- }
- printf("%c ", r->data);
- preorder(r->lnext);
- preorder(r->rnext);
-
- }
-
- void inorder(bitree_t *r)
- {
- if(r == NULL) {
- return ;
- }
- inorder(r->lnext);
- printf("%c ", r->data);
- inorder(r->rnext);
-
- }
-
- void postorder(bitree_t *r)
- {
- if(r == NULL) {
- return ;
- }
-
- postorder(r->lnext);
- postorder(r->rnext);
- printf("%c ", r->data);
-
- }

- /* test.c */
- #include "binary_tree.h"
-
- int main(int argc, const char *argv[])
- {
-
- bitree_t *r;
-
- r = binary_tree_create();
-
- preorder(r);
- puts("");
-
- inorder(r);
- puts("");
-
- postorder(r);
- puts("");
-
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。