链式二叉树的C语言代码
来源:互联网 发布:网络连接异常 编辑:程序博客网 时间:2024/06/02 04:45
#include <stdio.h>
#include <malloc.h>
//构造数据类型
struct BTNode{
char data;
struct BTNode *pLchild; //建立一个左指针域
struct BTNode *pRchild; //建立一个右指针域
} ;
//函数声明
struct BTNode * CreateBTree();
void PreTraverseBTree(struct BTNode *);
void InTraverseBTree(struct BTNode *);
void PostTraverseBTree(struct BTNode *);
//主函数
int main()
{
struct BTNode *pT=CreateBTree();//建立一个二叉树,将根节点赋给pT
printf("先序遍历的结果:\n");
PreTraverseBTree(pT); //先序遍历
printf("中序遍历的结果:\n");
InTraverseBTree(pT); //中序遍历
printf("后序遍历的结果:\n");
PostTraverseBTree(pT); //后序遍历
return 0;
}
//建立二叉树
struct BTNode * CreateBTree()
{
struct BTNode *pA=(struct BTNode*)malloc(sizeof(struct BTNode)); //构造出指向数据的指针
struct BTNode *pB=(struct BTNode*)malloc(sizeof(struct BTNode));
struct BTNode *pC=(struct BTNode*)malloc(sizeof(struct BTNode));
struct BTNode *pD=(struct BTNode*)malloc(sizeof(struct BTNode));
struct BTNode *pE=(struct BTNode*)malloc(sizeof(struct BTNode));
pA->data='A'; //赋值
pB->data='B';
pC->data='C';
pD->data='D';
pE->data='E';
//节点之间建立联系
pA->pLchild=pB;
pA->pRchild=pC;
pB->pLchild=pB->pRchild=NULL;
pC->pLchild=pD;
pC->pRchild=NULL;
pD->pLchild=NULL;
pD->pRchild=pE;
pE->pLchild=pE->pRchild=NULL;
return pA;
}
//前序遍历
void PreTraverseBTree(struct BTNode *pT)
{
if(NULL!=pT)
{
printf("%c\n",pT->data);
//递归调用左子树
if(NULL!=pT->pLchild)
{
PreTraverseBTree(pT->pLchild);
}
//递归调用右子树
if(NULL!=pT->pRchild)
{
PreTraverseBTree(pT->pRchild);
}
/*
pT->pLchild->data可以代表整个左子树;
伪算法
根节点->左子树->右子树
*/
}
}
//中序遍历
void InTraverseBTree(struct BTNode *pT)
{
if(NULL!=pT)
{
//递归调用左子树
if(NULL!=pT->pLchild)
{
InTraverseBTree(pT->pLchild);
}
printf("%c\n",pT->data);
//递归调用右子树
if(NULL!=pT->pRchild)
{
InTraverseBTree(pT->pRchild);
}
}
}
//后序遍历
void PostTraverseBTree(struct BTNode *pT)
{
if(NULL!=pT)
{
//递归调用左子树
if(NULL!=pT->pLchild)
{
PostTraverseBTree(pT->pLchild);
}
//递归调用右子树
if(NULL!=pT->pRchild)
{
PostTraverseBTree(pT->pRchild);
}
//调用中子树
printf("%c\n",pT->data);
}
}
#include <malloc.h>
//构造数据类型
struct BTNode{
char data;
struct BTNode *pLchild; //建立一个左指针域
struct BTNode *pRchild; //建立一个右指针域
} ;
//函数声明
struct BTNode * CreateBTree();
void PreTraverseBTree(struct BTNode *);
void InTraverseBTree(struct BTNode *);
void PostTraverseBTree(struct BTNode *);
//主函数
int main()
{
struct BTNode *pT=CreateBTree();//建立一个二叉树,将根节点赋给pT
printf("先序遍历的结果:\n");
PreTraverseBTree(pT); //先序遍历
printf("中序遍历的结果:\n");
InTraverseBTree(pT); //中序遍历
printf("后序遍历的结果:\n");
PostTraverseBTree(pT); //后序遍历
return 0;
}
//建立二叉树
struct BTNode * CreateBTree()
{
struct BTNode *pA=(struct BTNode*)malloc(sizeof(struct BTNode)); //构造出指向数据的指针
struct BTNode *pB=(struct BTNode*)malloc(sizeof(struct BTNode));
struct BTNode *pC=(struct BTNode*)malloc(sizeof(struct BTNode));
struct BTNode *pD=(struct BTNode*)malloc(sizeof(struct BTNode));
struct BTNode *pE=(struct BTNode*)malloc(sizeof(struct BTNode));
pA->data='A'; //赋值
pB->data='B';
pC->data='C';
pD->data='D';
pE->data='E';
//节点之间建立联系
pA->pLchild=pB;
pA->pRchild=pC;
pB->pLchild=pB->pRchild=NULL;
pC->pLchild=pD;
pC->pRchild=NULL;
pD->pLchild=NULL;
pD->pRchild=pE;
pE->pLchild=pE->pRchild=NULL;
return pA;
}
//前序遍历
void PreTraverseBTree(struct BTNode *pT)
{
if(NULL!=pT)
{
printf("%c\n",pT->data);
//递归调用左子树
if(NULL!=pT->pLchild)
{
PreTraverseBTree(pT->pLchild);
}
//递归调用右子树
if(NULL!=pT->pRchild)
{
PreTraverseBTree(pT->pRchild);
}
/*
pT->pLchild->data可以代表整个左子树;
伪算法
根节点->左子树->右子树
*/
}
}
//中序遍历
void InTraverseBTree(struct BTNode *pT)
{
if(NULL!=pT)
{
//递归调用左子树
if(NULL!=pT->pLchild)
{
InTraverseBTree(pT->pLchild);
}
printf("%c\n",pT->data);
//递归调用右子树
if(NULL!=pT->pRchild)
{
InTraverseBTree(pT->pRchild);
}
}
}
//后序遍历
void PostTraverseBTree(struct BTNode *pT)
{
if(NULL!=pT)
{
//递归调用左子树
if(NULL!=pT->pLchild)
{
PostTraverseBTree(pT->pLchild);
}
//递归调用右子树
if(NULL!=pT->pRchild)
{
PostTraverseBTree(pT->pRchild);
}
//调用中子树
printf("%c\n",pT->data);
}
}
阅读全文
1 0
- 链式二叉树的C语言代码
- 数据结构 C语言 链式二叉树
- 二叉树链式结构C代码实现
- 二叉树链式存储的C实现
- 链式二叉树的遍历C语言版
- 数据结构C语言实现之二叉树链式结构
- 二叉树的非递归遍历(c语言 链式储存)
- 数据结构——二叉树的链式实现(C语言)
- 链式二叉树代码示例
- 数据结构-二叉树 链式 c
- 二叉树的链式存储结构 C++代码实现
- 简单的C语言二叉树的实现代码
- 二叉树的链式存储与实现(C++)
- 链表、链式栈、链式队列、二叉树的C简要实现
- 二叉树的链式存储
- 链式二叉树的遍历
- 二叉树的链式存储
- 链式二叉树的实现
- XListView+MyBaseAdapter适配器
- kuangbin 数论 F
- 【Python】scikit-learn机器学习(二)——BP神经网络
- B. Arpa and an exam about geometry
- 数据大于long long最大值,处理方法 子串加法运算
- 链式二叉树的C语言代码
- 欢迎使用CSDN-markdown编辑器
- Eclipse中文版之完美汉化教程(详细图解)
- 学生总结(六)---meclean的作用
- JAVA设计模式之装饰模式(decorator)
- Turtlebot3入门手册之三:PC端软件配置
- PlayFramework安装
- 使用PHPStorm实现远程调试
- position中的sticky