c语言实现二叉树的递归遍历
c语言实现二叉树递归遍历,首先用结构体给出结点类型,然后创建具体的结点变量,接着对结点进行连接。递归遍历的函数的内部主要是根节点的打印和左右子树的递归,前中后序的实现通过调整递归的顺序即可完成。
ps:递归结束条件很重要,不要忘记。
对于下图所示的二叉树进行遍历:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>//二叉树结点
typedef struct BINARYNODE
{char ch;struct BINARYNODE* lchild;struct BINARYNODE* rchild;}BinaryNode;//递归遍历
void Recursion(BinaryNode* root)
{if (root == NULL)//递归结束条件很重要{return;}//先访问根结点 printf("%c ", root->ch);//再遍历左子树Recursion(root->lchild);//遍历右子树Recursion(root->rchild);
}void CreatBinaryNode()
{//创建结点BinaryNode node1 = { 'A',NULL,NULL };BinaryNode node2 = { 'B',NULL,NULL };BinaryNode node3 = { 'C',NULL,NULL };BinaryNode node4 = { 'D',NULL,NULL };BinaryNode node5 = { 'E',NULL,NULL };BinaryNode node6 = { 'F',NULL,NULL };BinaryNode node7 = { 'G',NULL,NULL };BinaryNode node8 = { 'H',NULL,NULL };//建立结点关系node1.lchild = &node2;node1.rchild = &node6;node2.rchild = &node3;node3.lchild = &node4;node3.rchild = &node5;node6.rchild = &node7;node7.lchild = &node8;Recursion(&node1);}
int main()
{CreatBinaryNode();system("pause");return 0;
}
前序遍历:
中序遍历:
后序遍历:
c语言实现二叉树的递归遍历相关推荐
- C语言-数据结构-二叉树的递归遍历和非递归遍历
看了大量网络相关的理论和程序,多数的C++ 写的,这里使用devC++ 编程语言 C语言; 整合王道考研答案和理论, 还有小甲鱼的数据结构, 郝斌的数据结构,各有特点吧 最值得研究的还是后序遍历的非递 ...
- C语言实现二叉树的各种遍历及求解深度
C语言实现二叉树的各种遍历及求解深度 一.介绍 ...
- 先根遍历二叉树c语言程序,二叉树先序遍历C语言实现
二叉树先序遍历C语言实现 二叉树先序遍历的实现思想是: 访问根节点: 访问当前节点的左子树: 若当前节点无左子树,则访问当前节点的右子树: 以图 1 为例,采用先序遍历的思想遍历该二叉树的过程为: 访 ...
- 二叉树的递归遍历和层序遍历(c/c++)
递归遍历: 二叉树的三种递归遍历为先序遍历,中序遍历和后续遍历.它们相似之处在于都是对二叉树的递归遍历且对任何一个结点都经过三次,区别之处在于哪一次对该结点进行访问,由此分为先,中,后序遍历.所以对于 ...
- C语言反转二叉树的递归和迭代解决方案(附完整源码)
C语言反转二叉树的递归和迭代解决方案 C语言反转二叉树的递归和迭代解决方案完整源码(定义,实现,main函数测试) C语言反转二叉树的递归和迭代解决方案完整源码(定义,实现,main函数测试) #in ...
- C++版二叉树非递归遍历
C++版二叉树非递归遍历 文章目录 C++版二叉树非递归遍历 一.二叉树前序遍历 二.二叉树中序遍历 三.二叉树后序遍历 一.二叉树前序遍历 /*** Definition for a binary ...
- 一种二叉树非递归遍历的简单写法
一种二叉树非递归遍历的简单写法 目录 一种二叉树非递归遍历的简单写法 先序遍历 中序遍历 后序遍历 二叉树的遍历是数据结构中非常基础的一个知识点,也是面试手撕代码环节的一个常见题目.这个问题的递归写法 ...
- 二叉树非递归遍历(模版)
读完本篇内容大约花费您7分钟时间 本文主要讲解二叉树非递归遍历,由于是非递归遍历,所以需要用到栈stack,我们如果仔细考虑递归遍历的代码,就能明白非递归种栈的应用. 由于几种遍历方式只是在处理中间节 ...
- 二叉树的递归遍历和非递归遍历实现(C++)(深度优先)
二叉树的递归遍历和非递归遍历(C++) 二叉树的遍历方式可分为先序遍历,中序遍历和后序遍历 先序遍历:先遍历根节点,再遍历左子节点,最后遍历右子节点. 中序遍历:先遍历左子节点,再遍历根节点,最后遍历 ...
最新文章
- 2018-3-20李宏毅机器学习笔记十----------Logistic Regression
- 用形态学的方法实现图像的角点检测
- hibernate 一对一(One-to-One)
- ZOJ 3471 压缩状态DP
- 5.VMware View 4.6安装与部署-安装view agent与模版
- java设计模式之UML③类图讲解多个类之间的关系
- oc引导windows蓝屏_人人都会遇到系统蓝屏问题,教大家自已排除蓝屏,学会一辈子受用...
- Windows Store App 获取文件及文件夹列表
- 【Python】万花筒
- IIS 7 托管管道模式 经典模式(Classic) 集成模式(Integrated) 分析与理解
- 黑苹果16g内存够用吗_现阶段最便宜的完美黑苹果配置是什么?
- JVM学习-分代收集算法
- 百面机器学习—模型复杂度与模型的方差、偏差的关系
- sqlite配置下载安装教程
- Java研发方向如何准备BAT技术面试
- Mysql学习——建表语句详解
- 服务产品(商品)评论中的产品特征挖掘方法
- ADW_Launcher
- 熔断机制什么意思_熔断机制是什么意思 股市熔断是什么意思
- 局域网稳定性测试软件,局域网速度测试
热门文章
- Scala:WordCount有关函数浅析
- 除夕有6.88亿人使用微信红包;超2.5亿人集齐五福过福年;巴菲特成苹果第四大股东丨价值早报
- mysql数据库日志存储位置_MySQL数据库之mysql日志文件在哪 如何修改MySQL日志文件位置...
- Android布局文件之 include 详细介绍
- 02.青龙面板——薅京东羊毛,自动获取京豆、自动浇水、做任务
- 成为最有价值的汽车网站,易车还差点什么
- (前端)html与css css 17、浮动的性质
- 基于jquery实现自定义下拉菜单(前端开发)
- 荣耀手机多久能升级鸿蒙,荣耀30手机4.0后什么时候开始才可以升级鸿蒙?
- php 水印位置,ThinkPHP打水印及设置水印位置的方法