数据结构-C语言递归实现树的前中后序遍历

简介: #include #include typedef struct tree{ int number ; struct tree *left ; struct tree *right ; }TREE;//对树插入节点 void insert_tree(TREE **he...
#include <stdio.h>
#include <stdlib.h>
typedef struct tree
{
	int number ; 
	struct tree *left  ; 
	struct tree *right ; 
}TREE;
//对树插入节点 
void insert_tree(TREE **header , int number)
{
    //创建一颗树 
	TREE *New = NULL ; 
	New = malloc(sizeof(TREE));
	if(NULL == New)
	   return ;
	//初始化树节点的值 
	New->number = number ; 
	//分别将左子树和右子树设置为空 
	New->left = NULL ; 
	New->right = NULL ; 
	TREE **link = header ; 
	TREE *cur ; 
	while(cur = *link)
	{ 
        //判断新插入的节点和之前的值之间谁大谁小
        //小的就放在左子树,大的就放到右子树 
		if(New->number < cur->number)
			//*link = cur->left ; 
			link = &(cur->left) ;
		else
			link = &(cur->right) ; 
	}
	*link = New ;
}
//打印树 
void print_tree(TREE *header , int lever)
{
	if(header == NULL)
		return ; 
	
	print_tree(header->right , lever+1);
	int i ; 
	for(i = 0 ; i < lever ; i++)
		printf("\t");
	printf("%d\n" , header->number);

	print_tree(header->left , lever+1);
}
//树的前序遍历 
void front(TREE *header)
{
	if(header == NULL)
		return ; 
	printf("%d " , header->number);
	front(header->left);
	front(header->right);
}
//树的中序遍历 
void middle(TREE *header)
{
	if(header == NULL)
		return ; 
	middle(header->left);
	printf("%d " , header->number);
	middle(header->right);
}
//树的后序遍历 
void back(TREE *header)
{
	if(header == NULL)
		return ; 
	back(header->left);
	back(header->right);
	printf("%d " , header->number);
}

int main(void)
{
    int i ; 
    int buffer[10] ;
    TREE *header = NULL ;
    for(i = 0 ; i < 10 ; i++)
    {
        buffer[i] = rand()%100 ;
    }
    for(i = 0 ; i < 10 ; i++)
    {
        //给树插入元素 
        insert_tree(&header , buffer[i]);
    }
    print_tree(header , 1);
    printf("\n前序遍历\n");
    front(header);
    printf("\n中序遍历\n");
    middle(header);
    printf("\n后序遍历\n");
    back(header);
    getchar();
}

目录
相关文章
|
11天前
|
C语言
c语言回顾-函数递归(上)
c语言回顾-函数递归(上)
27 2
|
11天前
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
13 1
|
15天前
|
存储
【数据结构】二叉树链式结构——感受递归的暴力美学
【数据结构】二叉树链式结构——感受递归的暴力美学
|
19天前
【初阶数据结构】打破递归束缚:掌握非递归版快速排序与归并排序
【初阶数据结构】打破递归束缚:掌握非递归版快速排序与归并排序
|
19天前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
11天前
|
C语言
c语言回顾-函数递归(下)
c语言回顾-函数递归(下)
29 0
|
11天前
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
15 0
|
11天前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
21 0
|
1月前
|
C语言
数据结构基础详解(C语言):图的基本概念_无向图_有向图_子图_生成树_生成森林_完全图
本文介绍了图的基本概念,包括图的定义、无向图与有向图、简单图与多重图等,并解释了顶点度、路径、连通性等相关术语。此外还讨论了子图、生成树、带权图及几种特殊形态的图,如完全图和树等。通过这些概念,读者可以更好地理解图论的基础知识。
|
1月前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。