二叉树的创建与遍历
作者:互联网
二叉树(Binary Tree)是n(n >= 0)个节点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两颗互不相交的,分别称为根节点的左子树和右子树的二叉树组成。
一种为二叉树顺序存储结构,另一种为二叉树的链式存储结构
二叉链表:有一个数据域和两个指针域
一,二叉链表的节点结构定义:
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
二,根据先序创建二叉树
BiTree CreatBiTree(){
BiTree T;
char c;
scanf("%c",&c);
if(c == '#'){
T=NULL;
}
else{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=c;
T->lchild= CreatBiTree();
T->rchild= CreatBiTree();
}
return T;
}
visit(char data){
printf("%c",data);
}
三,二叉树的简单遍历(前序,中序,后序)
完整代码:
#include<stdio.h>
#include<stdlib.h>
//建立二叉树结构体
typedef struct BiTNode{
char data;
struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
//根据先序创建二叉树
BiTree CreatBiTree(){
BiTree T;
char c;
scanf("%c",&c);
if(c == '#'){
T=NULL;
}
else{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=c;
T->lchild= CreatBiTree();
T->rchild= CreatBiTree();
}
return T;
}
visit(char data){
printf("%c",data);
}
//先序遍历
xxTrvel(BiTree T){
if(T){
visit(T->data);
xxTrvel(T->lchild);
xxTrvel(T->rchild);
}
}
//中序遍历
zxTrvel(BiTree T) {
if(T){
zxTrvel(T->lchild);
visit(T->data);‘
zxTrvel(T->rchild);
}
}
//后序遍历
hxTrvel(BiTree T){
if(T){
hxTrvel(T->lchild);
hxTrvel(T->rchild);
visit(T->data);
}
}
int main()
{
BiTree T;
T=CreatBiTree();
printf("先序遍历结果:");
xxTrvel(T);
printf("\n");
printf("中序遍历结果:");
zxTrvel(T);
printf("\n");
printf("后序遍历结果:");
hxTrvel(T);
printf("\n");
return 0;
}
标签:遍历,创建,BiTNode,BiTree,二叉树,printf,data 来源: https://blog.csdn.net/qq_56013891/article/details/121355934