二叉树的几种实现方式(1)数组法
来源:互联网 发布:淘宝怎么上食用农产品 编辑:程序博客网 时间:2024/05/21 12:45
二叉树的概念就不和大家说了,相信大家都知道。直接上代码了!
(1)普通数组
#include<stdio.h> void create_btree( int *btree,int *data ,int len) { int level ,i ; btree[1] = data [1]; for( i = 2;i <= len ; i++) { level = 1; while( btree[ level] != 0) { if( data[i] > btree[level]) level = level *2 +1; else level = level *2; } btree[level] = data[i]; } }int main(){ int btree[16]; int data[10] ={0,5,6,4,8,2,3,7,1,9}; int i; for( i =1; i<16; i++) btree[i] = 0; create_btree( btree,data ,9); for( i = 1; i < 16 ; i++ ) printf("%2d: [%d]\n",i,btree[i]); return 0 ; }
(2)结构体数组
#include<stdio.h>#include<stdlib.h>struct tree{ int data; int left; int right;};typedef struct tree treenode;treenode btree[15];void create_btree( int *data ,int len) { int level ,i ,pos; btree[0].data= data[0]; for( i = 1;i < len ; i++) { btree[i].data = data[i]; level = 0; pos = 0 ; while( pos != 0 ) { if( data[i] > btree[level].data) if(btree[level].right != -1) level = btree[level].right; else pos = -1; else if(btree[level].left != -1) level = btree[level].left; else pos = 1; } if ( pos == 1 ) btree[level].left = i; else btree[level].right = i; printf("len = %d\n",len); } }int main(){ int data[10] ={5,6,4,8,2,3,7,1,9}; int i; for( i =0; i<15; i++) { btree[i].data = 0; btree[i].left = -1; btree[i].right = -1; } create_btree(data ,9); printf("左 数据 右 \n"); printf("-------------- \n"); for( i = 0; i < 15; i++ ) { if( btree[i].data != 0) printf("%2d:[%2d] [%2d] [%2d]\n",i,btree[i].left,btree[i].data,btree[i].right); } return 0 ; }
0 0
- 二叉树的几种实现方式(1)数组法
- 二叉搜索树-数组的实现方式
- 二叉树的几种遍历方式
- 二叉树的几种遍历方式
- 使用JavaScript实现数组去重的几种方式
- 数组排序几种实现方式
- 非递归方式遍历二叉树的几种方法
- Leetcode036--二叉树遍历的几种方式
- 二叉树遍历几种常见方式
- 二叉树的数组实现
- 数组初始化的几种方式;
- JS数组克隆的几种方式
- javascript创建数组的几种方式
- C# 拷贝数组的几种方式
- 数组逆转的几种方式
- Java创建数组的几种方式
- javascript创建数组的几种方式
- 数组的几种排序方式
- Cocos2d-x v3.x官方文档]动作 (Action)
- CharIndex的用法
- java classloader讲解一
- DWR中函数测试
- Oracle 学习笔记 12 -- 序列、索引、同义词
- 二叉树的几种实现方式(1)数组法
- centos定时任务管理器crontab的相关笔记
- C语言字符串操作总结大全(超详细)
- 函数指针与函数指针数组的使用方法
- js继承有5种实现方式
- gcc编译选项说明
- java classloader讲解二
- Java容器集合类的区别用法
- 无线wifi丢包的解决办法