二叉树的遍历——c语言
来源:互联网 发布:java技术的web服务器 编辑:程序博客网 时间:2024/06/05 06:20
利用二叉链表建立一棵二叉树,分别采用先序、中序和后序遍历该二叉树,并输出遍历的序列。
#include<stdio.h>#include<stdlib.h>#define MAX 100typedef struct BiTNode{ //定义二叉树 char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void CreateBiTree(BiTree *T){ char data; //按先序次序输入二叉树中结点的值(一个字符),‘#’表示空树 scanf("%c",&data); if(data == '#'){ *T = NULL; } else{ *T = (BiTree)malloc(sizeof(BiTNode)); //生成根结点 (*T)->data = data; //构造左子树 CreateBiTree(&(*T)->lchild); //构造右子树 CreateBiTree(&(*T)->rchild); }}void Visit(BiTree T){ //输出 if(T->data != '#'){ printf("%c ",T->data); }}void PreOrder(BiTree T){ //先序遍历 if(T != NULL){ //访问根节点 Visit(T); //访问左子结点 PreOrder(T->lchild); //访问右子结点 PreOrder(T->rchild); }}void InOrder(BiTree T){ //中序遍历 if(T != NULL){ //访问左子结点 InOrder(T->lchild); //访问根节点 Visit(T); //访问右子结点 InOrder(T->rchild); }}void PostOrder(BiTree T){ //后序遍历 if(T != NULL){ //访问左子结点 PostOrder(T->lchild); //访问右子结点 PostOrder(T->rchild); //访问根节点 Visit(T); }}int main(){ BiTree T; printf("以#代表空先序遍历\n输入二叉树:"); CreateBiTree(&T); printf("先序遍历:\n"); PreOrder(T); printf("\n"); printf("中序遍历:\n"); InOrder(T); printf("\n"); printf("后序遍历:\n"); PostOrder(T); return 0;}输入输出示例:
以#代表空先序遍历输入二叉树:ab##c##先序遍历:a b c中序遍历:b a c后序遍历:b c a--------------------------------Process exited after 10.89 seconds with return value 0请按任意键继续. . .
0 0
- 二叉树的遍历——c语言
- C语言实现二叉树的遍历
- 数据结构C语言二叉树的遍历
- C语言 二叉树的遍历
- C语言数据结构——遍历二叉树
- c 语言 二叉树遍历
- 数据结构——二叉树的遍历问题(C语言)
- 二叉树的遍历(无头结点,C语言)——更新后
- stack 实现二叉树的非递归遍历——C语言
- C语言 二叉树的结构和遍历算法
- 二叉树遍历的c语言非递归实现
- 二叉树的遍历(c语言非递归算法)
- 数据结构-二叉树的遍历(类C语言描述)
- 二叉树的非递归遍历C语言实现
- 【算法】二叉树的递归遍历C语言实现
- 二叉树的创建与遍历(C语言实现)
- C语言二叉树的遍历,递归和非递归
- C语言二叉树的层序遍历
- 零基础入门 Docker
- STM32的TIM1_CH1N反向引脚输出PWM波.txt
- java继承
- Jsp 中文乱码解决
- 我的caffe学习之路<第八天>
- 二叉树的遍历——c语言
- rem布局下使用背景图片和sprite图
- .jquery(..)is not a function解决办法
- springmvc中controller注入request的线程安全问题
- 关联容器
- 查找子串,并且按字典顺序排序
- Angular指令之ng-bind-html
- python实现RDD转成聚类输入矩阵
- getWritableDatabase与getReadableDatabase的区别