zoukankan      html  css  js  c++  java
  • 使用C语言实现用数组构建二叉树并遍历

    #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("
    ");
    	midOrder(node_t);
    	printf("
    ");
    	afterOrder(node_t);
    
    
    	return 0;
    }
    
  • 相关阅读:
    sqlalchemy
    nginx配置文件,做多个项目代理
    pyspider
    Mysql原理+ 多实例 +表损坏
    Spring 学习-AOP
    java 基础 --- 动态代理和静态代理
    Spring 学习-IoC
    [转]字符编码笔记:ASCII,Unicode 和 UTF-8
    JVM(五) class类文件的结构
    数据结构(四)--- 红黑树(RedBlock-Tree)
  • 原文地址:https://www.cnblogs.com/zhang-han/p/14026180.html
Copyright © 2011-2022 走看看