1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 二叉树的顺序存储结构------(C语言实现)

二叉树的顺序存储结构------(C语言实现)

时间:2022-07-27 22:30:17

相关推荐

二叉树的顺序存储结构------(C语言实现)

上图所示的二叉树用顺序存储方式存为

以A结点为例:相当于一个一维数组啦

设A结点下标为i时

A的左子树下标为2*i +1,B就是 2*0+1 = 1

A的右子树下标为2*(i +1),C就是 2*(0+1) = 2

想必大家也发现了,这很容易造成内存的浪费

如上图只有A,B,D结点的话

下面是代码实现:

//定义二叉树的最大结点数#define MAX_SIZE 255//下标为0的位置存储根结点typedef Element SqBinTree[MAX_SIZE];SqBinTree tree;

#include <stdio.h>#include <stdlib.h>//定义二叉树的最大结点数#define MAX_SIZE 255//下标为0的位置存储根结点typedef char SeqBinTree[MAX_SIZE];//可以参考我写的文章 (c语言中的typedef) //初始化 void InitTree(SeqBinTree tree);//创建二叉树void CreatSeqtree(SeqBinTree tree,int index);//打印二叉树void PrintSeqtree(SeqBinTree tree); int main(void) {SeqBinTree tree;InitTree(tree);CreatSeqtree(tree,0);PrintSeqtree(tree);return 0;}void InitTree(SeqBinTree tree){//将字符数组中的每个元素的设置为空int i;for(i=0;i<MAX_SIZE;i++){tree[i] = '\0';}}//创建二叉树void CreatSeqtree(SeqBinTree tree,int index){char ch;printf("请输入根结点:\n");ch = getchar();fflush(stdin);//清空缓冲区if(ch == '^'){tree[index]='\0';return;}tree[index] = ch;//某个结点输入完毕后,还需要让用户输入左孩子和右孩子printf("输入左孩子结点:\n");CreatSeqtree(tree,2*index+1);printf("输入右孩子结点:\n");CreatSeqtree(tree,2*(index+1));}//打印二叉树void PrintSeqtree(SeqBinTree tree){int i;for(i=0;i<15;i++)//随便打印十五个看看 {printf("%c ",tree[i]); } }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。