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

使用C语言实现用数组构建二叉树并遍历

时间:2020-11-27 10:52:16      阅读:17      评论:0      收藏:0      [点我收藏+]

标签:ret   实现   else   creat   void   pre   code   排列   ror   

#include <stdio.h>

typedef struct Node {
	int data;
	struct Node* lchild;
	struct Node* rchild;
}Node;
//使用数组存放数据,注意是按照一层一层的排列,-1代表为空
int array[] = {1,2,3,4,5,6,7};
//构建二叉树
void createTree(Node **node,int index) {
	if (index <= (sizeof(array)/sizeof(int)) ){
		if (array[index-1] == -1) {
			*node = NULL;
			return;
		}
		else {
			*node = (Node*)malloc(sizeof(Node));
			(*node)->data = array[index-1]; 
			createTree(&((*node)->lchild), index * 2);
			createTree(&((*node)->rchild), index * 2 + 1);
		}
	}
	else {
		*node = NULL;
		return;
	}
}

void preOrder(Node* node) {
	if (node != NULL) {
		printf("%d ", node->data);
		preOrder(node->lchild);
		preOrder(node->rchild);
	}
	else {
		return;
	}
}

void midOrder(Node* node) {
	if (node != NULL) {
		midOrder(node->lchild);
		printf("%d ", node->data);
		midOrder(node->rchild);
	}
	else {
		return;
	}
}

void afterOrder(Node* node) {
	if (node != NULL) {
		afterOrder(node->lchild);
		afterOrder(node->rchild);
		printf("%d ", node->data);
	}
	else {
		return;
	}
}

int main(int argc, char* args[]){
	Node* node_t;

	createTree(&node_t,1);

	preOrder(node_t);
	printf("\n");
	midOrder(node_t);
	printf("\n");
	afterOrder(node_t);


	return 0;
}

使用C语言实现用数组构建二叉树并遍历

标签:ret   实现   else   creat   void   pre   code   排列   ror   

原文地址:https://www.cnblogs.com/zhang-han/p/14026180.html

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