📄 binarytree.c
字号:
#include <stdio.h>
#include <stdlib.h>
typedef char TElemType;
typedef struct BiTnode{
TElemType data;
struct BiTnode *lchild, *rchild;
}BiTNode, *BiTree;
void CreateBiTree(BiTree *T){
TElemType ch;
printf("Enter element(enter '#' node is empty):\n");
ch = getchar();
if(ch == '#') *T = NULL;
else{
*T = (BiTNode *)malloc(sizeof(BiTNode));
if(!(*T)) exit(-1);
(*T)->data = ch;
CreateBiTree( &(*T)->lchild );
CreateBiTree( &(*T)->rchild );
}
}
void DestroyBiTree(BiTree tree){
//BiTree T;
//T = tree;
//if(tree->lchild) tree = tree->lchild;
//else tree = tree->rchild;
//free(T);
printf("Free tree.\n");
free(tree);
}
void Destroy(BiTree T){
if(T){
if(T->lchild)
Destroy(T->lchild);
if(T->rchild)
Destroy(T->rchild);
printf("Free tree.\n");
free(T);
}
}
void PreOrderTraverse(BiTree T, void(* Visit)(BiTree Tree) ){
if(T){
Visit(T);
PreOrderTraverse(T->lchild, Visit);
PreOrderTraverse(T->rchild, Visit);
}
}
void InOrderTraverse(BiTree T, void(* Visit)(BiTree Tree) ){
if(T){
PreOrderTraverse(T->lchild, Visit);
Visit(T);
PreOrderTraverse(T->rchild, Visit);
}
}
void PostOrderTraverse(BiTree T, void(* Visit)(BiTree Tree) ){
if(T){
PreOrderTraverse(T->lchild, Visit);
PreOrderTraverse(T->rchild, Visit);
Visit(T);
}
}
void PrintElement(BiTree T){
printf("%3c", T->data);
}
int main()
{
BiTree tree1;
printf("Create tree:\n");
CreateBiTree(&tree1);
printf("Pre Order Traverse tree:\n");
PreOrderTraverse(tree1, PrintElement);
printf("\nIn Order Traverse tree:\n");
InOrderTraverse(tree1, PrintElement);
printf("\nPost Order Traverse tree:\n");
PostOrderTraverse(tree1, PrintElement);
printf("\nDestroy tree:\n");
//PostOrderTraverse(tree1, DestroyBiTree);
Destroy(tree1);
system("pause");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -