码迷,mamicode.com
首页 > 编程语言 > 详细

二叉树的先序,中序,后序遍历 c语言

时间:2015-08-10 14:55:55      阅读:375      评论:0      收藏:0      [点我收藏+]

标签:c语言   二叉树   遍历   数据结构   

#include<Stdio.h>
#include<malloc.h>

#define Data_Type char

typedef struct Node{
	Data_Type data;
	Node * lchird;
	Node * rchird;
}NODE, *PNODE;

PNODE create();
void preOrderTraverse(PNODE);
void inOrderTraverse(PNODE);
void postOrderTraverse(PNODE);
int main(void){

	PNODE pRoot = create();
	postOrderTraverse(pRoot);
	return 0;	
} 

PNODE create(){
	PNODE a = (PNODE)malloc(sizeof(PNODE));
	PNODE b = (PNODE)malloc(sizeof(PNODE));
	PNODE c = (PNODE)malloc(sizeof(PNODE));
	PNODE d = (PNODE)malloc(sizeof(PNODE));
	PNODE e = (PNODE)malloc(sizeof(PNODE));
	PNODE f = (PNODE)malloc(sizeof(PNODE));
	PNODE g = (PNODE)malloc(sizeof(PNODE));

	a->data = 'a';
	a->lchird = b;
	a->rchird = c;
	
	b->data = 'b';
	b->lchird = d;
	b->rchird = e;
	
	c->data = 'c';
	c->lchird = f;
	c->rchird = NULL;
	
	d->data = 'd';
	d->lchird = NULL;
	d->rchird = NULL;
	
	e->data = 'e';
	e->lchird = NULL;
	e->rchird = NULL;
	
	f->data = 'f';
	f->lchird = NULL;
	f->rchird = g;
	
	g->data = 'g';
	g->lchird = NULL;
	g->rchird = NULL;
	
	return a;
}

void preOrderTraverse(PNODE p){
	PNODE pRoot = p;
	printf("%c\n",pRoot->data);
	if(NULL!=pRoot->lchird){
		preOrderTraverse(pRoot->lchird);
	}
	if(NULL!=pRoot->rchird){
		preOrderTraverse(pRoot->rchird);
	}
}

void inOrderTraverse(PNODE ps){	
	PNODE pRoot = p;
	if(NULL!=pRoot->lchird){
		inOrderTraverse(pRoot->lchird);
	}
	printf("%c\n",pRoot->data);
	if(NULL!=pRoot->rchird){
		inOrderTraverse(pRoot->rchird);
	}
}

void postOrderTraverse(PNODE p){
	PNODE pRoot = p;
	if(NULL!=pRoot->lchird){
		postOrderTraverse(pRoot->lchird);
	}
	if(NULL!=pRoot->rchird){
		postOrderTraverse(pRoot->rchird);
	}
	printf("%c\n",pRoot->data);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

二叉树的先序,中序,后序遍历 c语言

标签:c语言   二叉树   遍历   数据结构   

原文地址:http://blog.csdn.net/u013578413/article/details/47397411

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!