`
jacobcookie
  • 浏览: 94840 次
社区版块
存档分类
最新评论

二叉树三种遍历方式(递归)

阅读更多

二叉树的先序、中序、后序遍历,采用递归实现。

#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;
}
3
0
分享到:
评论
3 楼 renread 2012-11-24  
jacobcookie 写道
renread 写道
数据输入之后就没反应了。

没理由啊,你怎么输入数据的?

不好意思,理解错了,每次输一个字符都按了回车.
2 楼 jacobcookie 2012-11-23  
renread 写道
数据输入之后就没反应了。

没理由啊,你怎么输入数据的?
1 楼 renread 2012-11-23  
数据输入之后就没反应了。

相关推荐

    C++ 二叉树的先序遍历、中序遍历和后序遍历非递归算法

    用C++写的,包括二叉树的构建,二叉树的先序遍历、中序遍历和后序遍历非递归算法。

    二叉树先序遍历、中序遍历和后序遍历非递归算法 C++源码

    用C++写的二叉树先序遍历、中序遍历和后序遍历非递归算法

    数据结构 二叉树三种遍历的非递归算法(背诵版).doc

    本资料“数据结构 二叉树三种遍历的非递归算法(背诵版)”着重介绍了二叉树的三种主要遍历方法——前序遍历、中序遍历和后序遍历的非递归实现。 **前序遍历**: 前序遍历的顺序是:根节点 -&gt; 左子树 -&gt; 右子树。非...

    二叉树先序、中序、后序三种遍历的非递归算法

    常见的二叉树遍历方法有三种:先序遍历、中序遍历和后序遍历。下面我们将讨论这三种遍历方法的非递归算法。 一、先序遍历非递归算法 先序遍历是指先访问根结点,然后访问左子树,最后访问右子树。非递归算法使用栈...

    C语言实现二叉树的中序遍历(递归)

    中序遍历是一种常见的二叉树遍历方式,其步骤为: 1. 遍历左子树; 2. 访问根节点; 3. 遍历右子树。 对于任何给定的二叉树节点来说,如果它有左右子节点,则按照“左-根-右”的顺序进行访问;如果没有子节点,则...

    二叉树三种遍历算法的源码背诵版

    二叉树的遍历有多种方式,本文将详细介绍二叉树的三种常见遍历算法:先序遍历、 中序遍历和后序遍历。 1. 先序遍历非递归算法 先序遍历是一种常见的二叉树遍历算法。它的遍历顺序是:根节点 -&gt; 左子树 -&gt; 右子树。...

    二叉树后序遍历的非递归算法

    这是数据结构中二叉树的后序遍历的非递归算法的源代码。

    C语言实现二叉树的前序遍历(非递归)

    前序遍历是二叉树遍历的一种方式,其顺序为“根节点 -&gt; 左子树 -&gt; 右子树”。具体而言,在遍历过程中,首先访问根节点,然后递归地遍历左子树,最后递归地遍历右子树。对于非递归的前序遍历,通常会利用栈来辅助实现...

    二叉树的各种遍历的递归算法

    根据给定文件的信息,本文将详细介绍二叉树的前序、中序、后序以及层序遍历的递归算法,并结合代码实例进行说明。 ### 一、二叉树的基本概念 二叉树是一种非常重要的数据结构,在计算机科学中有着广泛的应用。一个...

    二叉树的三种遍历,递归非递归,按层。

    二叉树的三种遍历,递归与非递归,按层。适合初学者。

    C语言实现二叉树的后序遍历(递归)

    二叉树的遍历是访问树中所有节点的过程,通常有三种遍历方式:前序遍历、中序遍历和后序遍历。 **后序遍历:** 后序遍历遵循“左-右-根”的顺序,即首先遍历左子树,然后遍历右子树,最后访问根节点。这种遍历方式...

    二叉树的递归遍历,中序遍历,先序遍历,后序遍历

    二叉树的遍历有多种方式,本文将介绍二叉树的递归遍历,中序遍历,先序遍历和后序遍历。 递归遍历是指使用递归函数来遍历二叉树的每个结点。递归遍历的优点是代码简洁易懂,但缺点是可能会导致堆栈溢出。在本文的...

    数据结构二叉树三种遍历

    "数据结构二叉树三种遍历" 二叉树是一种基本的数据结构,它广泛应用于计算机...二叉树的三种遍历方式都是基于栈的实现,使用非递归算法来实现遍历过程。这些算法都是基于栈的实现,使用visite函数来访问结点的数据。

    二叉树的创建与三种遍历的递归与非递归实现

    二叉树的创建与三种遍历的递归与非递归实现 包括二叉树的动态创建,前序遍历,中序遍历,后续遍历的递归与非递归方法的实现。

    二叉树的递归遍历、非递归遍历和层次遍历

    二叉树的递归遍历、非递归遍历和层次遍历

    数据结构二叉树遍历递归,非递归

    在本主题中,我们将深入探讨二叉树的三种主要遍历方法:中序遍历、前序遍历和后序遍历,以及如何通过递归和非递归的方式实现这些遍历。 首先,让我们理解递归遍历的概念。递归是一种解决问题的方法,它将问题分解为...

    二叉树的后序遍历非递归算法.doc

    "二叉树的后序遍历非递归算法" 本文档主要介绍了二叉树的后序遍历非递归算法,该算法的实现可以有效地避免递归函数的使用,提高了算法的效率。该算法的实现主要基于栈的使用,将结点入栈和出栈来实现后序遍历。 ...

    二叉树的遍历的非递归算法(C++模板实现)

    使用C++模板、类的技术实现了二叉树的中序遍历,在BC3.1已经测试成功

    二叉树三种遍历动画演示

    本资源“二叉树三种遍历动画演示”提供了对二叉树遍历方法的直观理解,通过动态的动画形式帮助学习者更好地掌握这些概念。 1. 前序遍历(Preorder Traversal): 前序遍历遵循“根-左-右”的访问顺序。首先访问根...

    C语言实现二叉树的中序遍历(非递归)

    本文将详细介绍如何用C语言实现二叉树的中序遍历(非递归方式),并给出具体的代码示例。 #### 基本概念 - **二叉树**:每个节点最多有两个子节点的数据结构。 - **中序遍历**:遍历顺序为“左-根-右”,即先遍历...

Global site tag (gtag.js) - Google Analytics