电子说
二叉树是一种特殊的树型结构,一般都以二叉树作为树型结构学习的案例讲解。
二叉树的主要操作有遍历,例如有先序遍历、中序遍历、后序遍历。在遍历之前,就是创建一棵二叉树,当然,还需要有删除二叉树的算法。
以二叉树的创建、删除、先序遍历为例,实现代码如下
#include
#include
typedef char ElemType;
typedef struct node
{ ElemType data;
struct node *lchild, *rchild;
} BTNode;
BTNode * createTree(BTNode *tree){
ElemType e;
fflush(stdin);
scanf("%c", &e);
if(e != '#'){
tree = (BTNode *)malloc(sizeof(BTNode));
tree->data = e; tree->lchild = NULL; tree->rchild = NULL;
tree->lchild = createTree(tree->lchild);
tree->rchild = createTree(tree->rchild);
}
return tree;
}
void DestroyBTree(BTNode *b)
{ if (b==NULL) return ;
else
{ DestroyBTree(b->lchild);
DestroyBTree(b->rchild);
free(b);
}
}
void PreOrder(BTNode *b)
{ if (b!=NULL)
{ printf("%c ",b->data);
PreOrder(b->lchild);
PreOrder(b->rchild);
}
}
int main(){
BTNode *tree = createTree(tree);
PreOrder(tree);
DestroyBTree(tree);
return 0;
}
测试用例如下
A
B
D
#
G
#
#
#
C
E
#
#
F
#
#
A B D G C E F
以上测试用的测试案例,就是上述二叉树图形的结构,二叉树构成过程中,以先序的方式创建,子树为空的时候,输入为#
上述算法中,还可以做更多的优化,每一个优化都是一次进步。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !