ds_bintree_a.cpp
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct Ttree tree;
typedef tree *treePrt;
typedef treePrt *treeRef;
typedef struct Ttree {
char data;
treePrt left;
treePrt right;
} tree;
void tree_grow(treeRef mtree, char which, char data);
void tree_preorder(treeRef mtree);
void tree_inorder(treeRef mtree);
void tree_postorder(treeRef mtree);
void main()
{
clrscr();
tree *mine = (tree *)malloc(sizeof(tree));
mine->data = 'a';
tree_grow(&mine, 'l', 'b');
tree_grow(&mine, 'r', 'c');
tree_preorder(&mine);puts("");
tree_inorder(&mine);puts("");
tree_postorder(&mine);puts("");
}
void tree_grow(treeRef mtree, char which, char data)
{
tree *branch = (tree *)malloc(sizeof(tree));
branch->data = data;
branch->left = NULL;
branch->right = NULL;
switch (which) {
case 'l':
(*mtree)->left = branch;
break;
case 'r':
(*mtree)->right = branch;
break;
default:
printf("%s", "unknown branch.");
}
}
void tree_preorder(treeRef mtree)
{
printf("%c", (*mtree)->data);
if ((*mtree)->left) tree_preorder(&((*mtree)->left));
if ((*mtree)->right) tree_preorder(&((*mtree)->right));
}
void tree_inorder(treeRef mtree)
{
if ((*mtree)->left) tree_inorder(&((*mtree)->left));
printf("%c", (*mtree)->data);
if ((*mtree)->right) tree_inorder(&((*mtree)->right));
}
void tree_postorder(treeRef mtree)
{
if ((*mtree)->left) tree_postorder(&((*mtree)->left));
if ((*mtree)->right) tree_postorder(&((*mtree)->right));
printf("%c", (*mtree)->data);
}
--
全世界都知道我喜歡妳
唯一不知道ㄉ........
就是妳.......