数据结构-C语言递归实现树的前中后序遍历
#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();
}
数据结构-C语言递归实现树的前中后序遍历的更多相关文章
- [C++] 非递归实现前中后序遍历二叉树
目录 前置技能 需求描述 binarytree.h 具体实现 binarytree.cpp main.cpp 网上代码一搜一大片,大同小异咯. 书上的函数实现代码甚至更胜一筹,而且抄一遍就能用,唯一问 ...
- C++二叉树前中后序遍历(递归&非递归)统一代码格式
统一下二叉树的代码格式,递归和非递归都统一格式,方便记忆管理. 三种递归格式: 前序遍历: void PreOrder(TreeNode* root, vector<int>&pa ...
- Binary Tree Traversal 二叉树的前中后序遍历
[抄题]:二叉树前序遍历 [思维问题]: 不会递归.三要素:下定义.拆分问题(eg root-root.left).终止条件 [一句话思路]: 节点非空时往左移,否则新取一个点 再往右移. [输入量] ...
- C语言二叉树的创建、(先中后序)遍历以及存在的问题
#include<stdlib.h> #include<stdio.h> #define True 1 #define False 0 typedef char TElemTy ...
- POJ 2255 Tree Recovery && Ulm Local 1997 Tree Recovery (二叉树的前中后序遍历)
链接:poj.org/problem?id=2255 本文链接:http://www.cnblogs.com/Ash-ly/p/5463375.html 题意: 分别给你一个二叉树的前序遍历序列和中序 ...
- C++实现对树的创建和前中后序遍历
#include<iostream>#include<stdio.h> using namespace std; class BitNode{ public: char dat ...
- 前中后序递归遍历树的体会 with Python
前序:跟->左->右 中序:左->根->右 后序:左>右->根 采用递归遍历时,编译器/解释器负责将递归函数调用过程压入栈并保护现场,在不同位置处理根节点即可实现不 ...
- 二叉树前中后/层次遍历的递归与非递归形式(c++)
/* 二叉树前中后/层次遍历的递归与非递归形式 */ //*************** void preOrder1(BinaryTreeNode* pRoot) { if(pRoot==NULL) ...
- Qt实现 动态化遍历二叉树(前中后层次遍历)
binarytree.h 头文件 #ifndef LINKEDBINARYTREE_H #define LINKEDBINARYTREE_H #include<c++/algorithm> ...
随机推荐
- 返回present的根
//返回四大tab页面 + (void)gobackToTabarController { UINavigationController* selectedTabNavController = (UI ...
- app如何更换用户头像信息呢?不妨这样做
对于现在的手机应用而言,要想获得更多的人的使用,就需要给用户更多的自由功能才行,这也是基于用户体验开发软件的核心思想,一切以用户为中心,想用户之所想,做用户之所需.今天我就来谈一谈刚学到的一个关于设置 ...
- debian 安装jdk
JDK下载http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6- ...
- Android Studio科普篇——1.几个个性化设置
本人未研读过android-studio使用文档,亦未去好好琢磨它的各种使用技巧等.以下内容均来自个人使用经验,如有讹误,还请指正. 1.主题. File->Settings, 搜索Theme, ...
- listview下拉刷新上拉加载扩展(二)-仿美团外卖
经过前几篇的listview下拉刷新上拉加载讲解,相信你对其实现机制有了一个深刻的认识了吧,那么这篇文章我们来实现一个高级的listview下拉刷新上拉加载-仿新版美团外卖的袋鼠动画: 项目结构: 是 ...
- 从Eclipse插件中读取资源
可以通过Eclipse里的OSGi的Bundle类,获取插件目录下的某个文件的输入流: 1. Bundle bundle = Platform.getBundle(Activator.PLUGIN_I ...
- windbg分析运行在64位环境下的32位程序的dump
windbg命令如下 1. .load wow64exts 2. !sw 3. ~* kvnf
- Spring boot之hello word
环境准备 一个称手的IDE(首选Myeclipse,也可以选Eclipse) Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用I ...
- Socket编程实践(9) --套接字IO超时设置方法
引:超时设置3种方案 1. alarm超时设置方法 //代码实现: 这种方式较少用 void sigHandlerForSigAlrm(int signo) { return ; } signal(S ...
- 【leetcode77】Single Number
一题目描述: 给定一个数组,只有一个数字出现一次,其余都是两次,判断那个数字 思路: 不断取出数据进行异或,最后一个数字,因为相同的数字会抵消 代码: public class Solution { ...