二叉树的先序、中序、后序遍历,采用递归实现。
#include<stdio.h>
#include<stdlib.h>
typedef char DataType;
//定义二叉树类型的节点
typedef struct BTnode{
DataType data;//数据域
struct BTnode* lchild,*rchild;//左孩子和右孩子
}BTree;
//创建二叉树,以先序的方式输入,如果左孩子或右孩子为空,则输入#
/*
例子 A 输入为:ABD##E##CF###
/ \
B C
/ \ /
D E F
*/
void createBTree(BTree * &t)
{
char c;
c=getchar();
if(c=='#')
t=NULL;
else
{
t=(BTree*)malloc(sizeof(BTree));
t->data=c;
createBTree(t->lchild);//创建左子树
createBTree(t->rchild);//创建右子树
}
}
//先序遍历
void preOrder(BTree *root)
{
if(NULL!=root)
{
printf("%c ",root->data);//先访问根节点
preOrder(root->lchild);//再先序遍历左子树
preOrder(root->rchild);//最后先序遍历右子树
}
}
//中序遍历
void inOrder(BTree *root)
{
if(NULL!=root)
{
inOrder(root->lchild);//先中序遍历左子树
printf("%c ",root->data);//再访问根节点
inOrder(root->rchild);//最后中序遍历右子树
}
}
//后序遍历
void postOrder(BTree *root)
{
if(NULL!=root)
{
postOrder(root->lchild);//先后序遍历左子树
postOrder(root->rchild);//再后序遍历右子树
printf("%c ",root->data);//最后访问根节点
}
}
int main()
{
BTree *root;
createBTree(root);//创建二叉树
preOrder(root);//先序遍历
printf("\n");
inOrder(root);//中序遍历
printf("\n");
postOrder(root);//后序遍历
printf("\n");
return 0;
}
分享到:
相关推荐
数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版).
用C++写的,包括二叉树的构建,二叉树的先序遍历、中序遍历和后序遍历非递归算法。
用C++写的二叉树先序遍历、中序遍历和后序遍历非递归算法
C语言实现二叉树的中序遍历(递归)。大家下载看看哦!有用的!
C++二叉树的前序,中序,后序,层序遍历的递归算法
这是数据结构中二叉树的后序遍历的非递归算法的源代码。
二叉树的三种遍历,递归与非递归,按层。适合初学者。
C语言实现二叉树的前序遍历(非递归),下载下来看看哦!
二叉树先序、中序、后序三种遍历的非递归算法
二叉树的创建与三种遍历的递归与非递归实现 包括二叉树的动态创建,前序遍历,中序遍历,后续遍历的递归与非递归方法的实现。
二叉树的递归遍历、非递归遍历和层次遍历
自己编写的实验二叉树的后序遍历非递归算法 包括以递归中序遍历建立二叉树 前序,中序,后序递归以及非递归实现二叉树的遍历 经vc6.0编译通过 自己实验,不足之处应该很多,望指出
使用C++模板、类的技术实现了二叉树的中序遍历,在BC3.1已经测试成功
数据结构二叉树三种遍历动画演示
利用栈的基本操作实现二叉树的中序遍历非递归算法。
数据结构实用教程之二叉树,其中包含了:二叉树的定义、二叉树的递归遍历、二叉树基本操作。 数据结构实用教程之二叉树,其中包含了:二叉树的定义、二叉树的递归遍历、二叉树基本操作。 数据结构实用教程之二叉树,...
二叉树三种遍历算法的源码背诵版 本文给出二叉树先序、中序、后序三种遍历的非递归算法,此三个算法可视为标准算法,直接用于考研答题。
二叉树的非递归遍历,使用C++实现二叉树的非递归遍历,对正在学习算法的同学应该挺有帮助的
采用二叉链表存储,实现二叉树的创建、遍历(递归)、赫夫曼编码和译码等典型操作。 1. 编程实现如下功能: (1)假设二叉树的结点值是字符型,根据输入的一棵二叉树的完整先序遍历序列(子树空用’#’表示),建立...
二叉树三种遍历的非递归算法(背诵版)kanakn卡看八不错的