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

二叉树的层次遍历

阅读更多

二叉树的层次遍历。

#include<stdio.h>
#include<stdlib.h>
typedef char DataType;
//树结点的数据类型定义
typedef struct BTnode{
	DataType data;
	struct BTnode* lchild,*rchild;
}BTree;
//队列的结点数据类型定义
typedef struct node{
  BTree * tdata; //存放树结点类型的指针
  struct node *next;
}qnode;
//队头指针 和 队尾指针
typedef struct {
  qnode *front,*rear;
}linkQueue;
//初始化队列
void Init(linkQueue *q)
{
	q->front=q->rear=NULL;
}
//元素入队
void InsertQueue(linkQueue * &q,BTree * e)
{
	qnode * node;
	node=(qnode*)malloc(sizeof(qnode));
	node->tdata=e;
	node->next=NULL;
	if(NULL==q->front)
	{
		q->front=q->rear=node;
	}
	else
	{
		q->rear->next=node;
		q->rear=node;
	}

}
//元素出队
BTree * outQueue(linkQueue * &q)
{
	BTree * e;
	qnode *temp;
	if(NULL==q->front)
		e=NULL;
	else
	{
		temp=q->front;
		e=temp->tdata;
		q->front=temp->next;
		free(temp);
	}
	return e;
}
//创建二叉树,以先序的方式输入,如果左孩子或右孩子为空,则输入#  
/* 
   例子  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);//创建右子树
	}
}

/*

二叉树的层次遍历算法: 
1.队列queue初始化;
2. 将根指针入队;
3. 循环直到队列queue为空
      3.1 q=队列queue出队的元素;
      3.2 访问结点q的数据域;
      3.3 若结点q存在左孩子,则将左孩子入队;
      3.4 若结点q存在右孩子,则将右孩子入队;

*/
//二叉树的层次遍历
void hierarchyTtraversal(linkQueue *queue,BTree * root)
{
	BTree *q;
	InsertQueue(queue,root);
	while(NULL!=queue->front)
	{
		q=outQueue(queue);
		printf("%c  ",q->data);
		if(q->lchild)
			InsertQueue(queue,q->lchild);
		if(q->rchild)
			InsertQueue(queue,q->rchild);
	}
}

int main()
{
	BTree *root;
	linkQueue queue;
	Init(&queue);
	createBTree(root);
	hierarchyTtraversal(&queue,root);
	printf("\n");
	return 0;
}
分享到:
评论

相关推荐

    二叉树层次遍历.rar

    数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例...

    数据结构实验3 二叉树层次遍历 二叉树的层次遍历

    (3)掌握二叉树层次遍历算法程序。 实验内容及要求: (1)建立包含10个结点的二叉树(树结构和数据元素的值由自己设定); (2)完成二叉树从左至右,从上至下层次遍历程序; (3)给出程序和遍历程序的结果。 ...

    【C/C++项目开发资源】二叉树层次遍历-二叉树层次遍历

    二叉树的层次遍历(也称为广度优先遍历)是一种遍历二叉树的方法,它按照从根节点开始从上到下、从...以下是一个使用队列实现的二叉树层次遍历的示例代码(假设二叉树节点定义为TreeNode,具有val、left和right属性):

    二叉树层次遍历.c

    二叉树层次遍历.c

    数据结构课程设计实例二叉树建立遍历冒泡排序快速排序_二叉排序树_二叉树层次遍历_二叉树非递归遍历_二叉树建立括号匹配直接插入选择

    主要介绍了C语言排序方法,包含10种排序,数据结构课程设计实例二叉树建立遍历冒泡排序快速排序_二叉排序树_二叉树层次遍历_二叉树非递归遍历_二叉树建立括号匹配直接插入选择代码大学生本科毕业设计期末作业排序...

    数据结构实验报告6-树-二叉树的遍历算法-实验内容及要求.docx

    通过实际编程实践,加深对二叉树这一数据结构的理解,并熟练运用不同的遍历方法(先序、中序、后序和层次遍历)来处理二叉树问题。 ### 数据结构设计 为了实现上述目标,需要设计一种适合存储二叉树的数据结构。...

    二叉树的层次遍历(c语言)

    这是用c语言编写的二叉树层次遍历程序,使用非递归的方法实现。欢迎使用。

    二叉树的层次遍历用C语言二叉树的层次遍历用C语言

    根据给定的信息,本文将详细解释如何使用C语言实现二叉树的层次遍历,并对提供的部分代码进行解析。 ### 二叉树的层次遍历 #### 什么是二叉树的层次遍历? 二叉树的层次遍历是指按照从上到下、从左到右的顺序依次...

    二叉树的层次遍历 vc++控制台程序

    在IT领域,二叉树是一种基础且重要的数据结构,它由节点构成,每个节点最多有两个子节点,通常称为左子节点和右子节点...这个控制台程序是一个学习和实践二叉树层次遍历的好例子,同时也涵盖了面向对象编程的基本概念。

    完全二叉树层次遍历和先根序遍历

    在完全二叉树中,在层次遍历和先根序遍历中,已知某节点在一种遍历中的编号,求该节点在另一种遍历中的编号。 程序描述: q = 1表示已知某节点在先根序遍历中的编号,求的是它在层次遍历中的编号。 q = 2表示已知的...

    5.3_2_二叉树的层次遍历1

    二叉树的层次遍历,也被称为二叉树的广度优先搜索(BFS),是一种按照从上到下、从左到右的顺序对二叉树进行逐层访问的算法。这种遍历方法广泛应用于数据结构和算法领域,特别是在解决各种问题时,如查找最近公共...

    使用 C++ 实现二叉树层次遍历的示例代码

    二叉树的层次遍历 该程序使用队列实现了二叉树的层次遍历,同时使用了广义表表示法来创建二叉树。程序先创建好一棵二叉树,然后调用 levelOrder 函数即可得到该二叉树的层次遍历结果。

    10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.zip

    二叉树层次遍历.c 二叉树非递归遍历.c 二叉树建立.c 快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c 二叉树...

    数据结构利用队列实现二叉树的层次遍历实验三

    实验中,我们将设计一个利用队列实现二叉树层次遍历的程序。 二叉树的递归结构性质是指二叉树的每个结点都可以看作是一个小二叉树,具有左子树和右子树两个分支。这种结构性质使得我们可以使用递归函数来建立二叉...

    数据结构课程设计报告-二叉树的遍历.docx

    本报告基于二叉树的遍历方法,旨在通过递归和非递归两种方法创建一棵二叉树,并对其进行先序遍历、中序遍历、后序遍历及层次遍历,并求出该二叉树的深度和叶子结点数。同时,报告还实现了查找功能,能够输入一个结点...

    C语言编程实现10个数据结构课程设计实例-二叉树建立遍历冒泡排序快速排序等.zip

    二叉树层次遍历.c 二叉树非递归遍历.c 二叉树建立.c 快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c 二叉树...

    二叉树的层次遍历,绝对正确

    ### 一、二叉树层次遍历简介 #### 1.1 定义 二叉树的层次遍历是指按照树的层次结构顺序依次访问树中的各个节点的过程。对于每一层来说,其所有节点都是从左到右进行访问的。 #### 1.2 应用场景 - 数据库查询优化 -...

    二叉树递归遍历,非递归遍历,按层次遍历

    本篇文章将深入探讨二叉树的三种遍历方法:递归遍历(前序、中序、后序)、非递归遍历以及层次遍历。 1. **递归遍历**: - **前序遍历**:先访问根节点,然后递归地遍历左子树,最后遍历右子树。用公式表示为:根-...

    二叉树的层次遍历 c++实现

    实现树的层次遍历 利用c++代码实现。。。。。。。

Global site tag (gtag.js) - Google Analytics