编程实现二叉树的遍历
#include "stdio.h"
typedef struct BiTNode{
char data; /*结点的数据域*/
struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/
} BiTNode , *BiTree;
/*创建一棵二叉树*/
void CreatBiTree(BiTree *T){
char c;
scanf("%c",&c);
if(c == ' ') *T = NULL;
else{
*T = (BiTNode * )malloc(sizeof(BiTNode)); /*创建根结点*/
(*T)->data = c; /*向根结点中输入数据*/
CreatBiTree(&((*T)->lchild)); /*递归地创建左子树*/
CreatBiTree(&((*T)->rchild)); /*递归地创建右子树*/
}
}
/*遍历二叉树*/
void PreOrderTraverse(BiTree T ){
if(T){ /*递归结束条件,T为空*/
printf("%3c",T->data); /*访问根结点,将根结点内容输出*/
PreOrderTraverse(T->lchild); /*先序遍历T的左子树*/
PreOrderTraverse(T->rchild); /*先序遍历T的右子数*/
}
}
void InOrderTraverse(BiTree T){
if(T){ /*如果二叉树为空,递归遍历结束*/
InOrderTraverse(T->lchild); /*中序遍历T的左子树*/
printf("%3c",T->data); /*访问根结点*/
InOrderTraverse(T->rchild); /*中序遍历T的右子数*/
}
}
void PosOrderTraverse(BiTree T){
if(T){ /*如果二叉树为空,递归遍历结束*/
PosOrderTraverse(T->lchild); /*后序遍历T的左子树*/
PosOrderTraverse(T->rchild); /*后序遍历T的右子数*/
printf("%3c",T->data); /*访问根结点*/
}
}
main()
{
BiTree T = NULL; /*最开始T指向空*/
printf("Input some characters to create a binary tree\n");
CreatBiTree(&T); /*创建二叉树*/
printf("The squence of preorder traversaling binary tree\n");
PreOrderTraverse(T); /*先序遍历二叉树*/
printf("\nThe squence of inorder traversaling binary tree\n");
InOrderTraverse(T); /*中序遍历二叉树*/
printf("\nThe squence of posorder traversaling binary tree\n");
PosOrderTraverse(T); /*后序遍历二叉树*/
getchar();
getchar();
}
编程实现二叉树的遍历相关推荐
- 【编程】二叉树的先序、中序、后序遍历
二叉树的遍历主要有三种: 先序遍历(根左右) 中序遍历(左根右) 后序遍历(左右根) 举个例子: 先(根)序遍历(根左右):A B D H E I C F J K G 中(根)序遍历(左根右):D H ...
- java数据结构二叉树遍历_java数据结构 之 二叉树的遍历(1)
树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合 节点:上图的圆圈,比如A,B,C等都是表示 ...
- 第五期 C/C++数据结构 二叉树的遍历以及结点数、深度
代码详见后面 实验三 树和二叉树 一.实验目的 1.使学生熟练掌握二叉树的逻辑结构和存储结构(重点). 2.熟练掌握二叉树的各种遍历算法(难点). 二.实验原理及说明 1. 前序遍历算法思想: (1) ...
- Python实现: 常用排序算法 二叉树的遍历算法
转载自:http://www.cnblogs.com/alex3714/articles/5474411.html点击打开链接,感谢原作者,如有侵权,联系删除 本节内容 算法定义 时间复杂度 空间复杂 ...
- 二叉树的遍历(c语言数据结构实验报告三)
二叉树的遍历 一.实验目的或任务 二.实验教学基本要求 三.实验教学的内容或要求 1. 编写函数,输入字符序列,建立二叉树的二叉链表 2. 编写函数,实现二叉树的中序递归遍历算法. 3. 编写函数,实 ...
- 二叉树的遍历(递归与非递归)
class Node: # 定义树节点def __init__(self, value, left=None, right=None): # 节点的值及左子树.右子树self.value = valu ...
- 刷题:二叉树的遍历方式及根据遍历结果还原二叉树
二叉树的遍历方式及根据遍历结果还原二叉树 1. 二叉树的遍历方式 2. 根据遍历结果还原二叉树 2.1 已知先序遍历和中序遍历还原二叉树 2.2 已知后序遍历和中序遍历还原二叉树 实验代码: 1. 二 ...
- 后序遍历的非递归算法python_刷题系列 - Python用非递归实现二叉树后续遍历
顺便把Python用非递归实现二叉树后续遍历也写了. 其实前序中序和后续都是针对父节点说的.比如下面这个最简单二叉树. 前序就是ABC,父节点A在前 中序就是BAC,父节点A在中间 后序就是BCA,父 ...
- 二叉树 1.0 -- 创建二叉树、遍历二叉树、二叉树常见问题求解
树的结构主要是为了查找,这个主要是为了搜索,树的结构关注的不是增删查改 树 广义上面的树的结构我们不知道树的一个节点是有几个子节点的,所以这个时候我们需要定义的一种结构就是,一个节点的孩子是可以动态的 ...
- PTA数据结构与算法题目集 6-9 二叉树的遍历
PTA数据结构与算法题目集(中文) 6-9 二叉树的遍历 void InorderTraversal( BinTree BT ){if(BT==NULL)return;if(BT->Left){ ...
最新文章
- C++逻辑运算符与逻辑表达式
- NLP(4) | 用词向量技术简单分析红楼梦人物关系用n-gramma生成词向量word2vect进行模型训练
- “金星生命论”乌龙事件新进展:那只是二氧化硫而已
- java 泛型 t_Kotlin(2) 泛型与集合
- Acwing第 36 场周赛【完结】
- HBase总结(二十)HBase常用shell命令详细说明
- 利用Python自动发送电子邮件
- 产品经理思维模型:创新价值曲线
- linux sz到指定的机器,linux 机器之间 zssh, rz, sz互相传输讲解
- extjs $ 美元符号修改
- 使用CLion在Gtkmm中加载glade文件时的相对路径问题
- linux 统计端口链接,linux netstat 统计链接数查看外部(转)
- 3.9-分区表fstab
- java list 分组_Java8 快速实现List转map 、分组、过滤等操作
- 2018-2019-1 20165307 20165327 20165332 实验二 固件程序设计
- 微信公众号是html页面吗,微信公众号网页开发
- ViewPage2和Fragment以及Tablayout使用
- hikari yml文件配置
- 自定义tensorflow的tf.image.resize_bicubic方法
- 公主同盟第3关(GBA)(难) 奥兰多西部
热门文章
- 小猿圈之Python开发的技巧一?
- Slowquery图形化显示MySQL慢日志工具
- Java线程唤醒与阻塞的定义与使用方法
- SQL Server 创建游标(cursor)
- log4j.xml配置示例
- Js获取处理日期时间
- Lucene2.4.0一般查询结果过滤与排行
- java找链表中最小值_算法图解:如何找出栈中的最小值?
- 【HDU1665】That Nice Euler Circuit(欧拉公式+点在线段上判断(不在端点)+线段规范相交)
- mysql5.5 mysqldump_mysql5.5mysqldump原文翻译_MySQL