c语言如何实现二叉树的顺序存储?

姑苏一梦 2013-12-23 11:56:42
如题。。。老师布置的任务,
我的想法是,先写一个头文件,定义一个struct bitnode {}
然后,再定义一个 struct tree{}。
但是在c文件实现中,不知道如何下手。。。。求高手赐教
...全文
618 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKATE11 2014-01-04
  • 打赏
  • 举报
回复
用一个数组 记录好父子节点位置下标就行了
JiMoKuangXiangQu 2014-01-04
  • 打赏
  • 举报
回复
gongheguoyingpai11 2013-12-25
  • 打赏
  • 举报
回复
既然是完全二叉树那用数组就可以了啊 假设根结点是0 那么一个结点其左孩子 且该结点的在数组中下标为n 则其左孩子的下标为2*n+1 而右孩子的下标为 2*n+2 因为是完全二叉树 所以使用这种方法应该是非常好的 之所以使用指针实现树是因为大多数树并不是满树或者完全二叉树 所以会造成大量空间浪费 而对于满树和完全二叉树当然使用数组实现最好
木犀花香 2013-12-25
  • 打赏
  • 举报
回复
引用 楼主 xyf12344 的回复:
如题。。。老师布置的任务, 我的想法是,先写一个头文件,定义一个struct bitnode {} 然后,再定义一个 struct tree{}。 但是在c文件实现中,不知道如何下手。。。。求高手赐教
看一下二叉堆的存储方式就会了!
一起来玩玩呗 2013-12-23
  • 打赏
  • 举报
回复
 在一棵n个结点的完全二叉树中,从树根起,自上层到下层,每层从左至右,给所有结点编号,能得到一个反映整个二叉树结构的线性序列。 然后用一个数组存起来就可以了
姑苏一梦 2013-12-23
  • 打赏
  • 举报
回复
后来,老师要求的是一个完全二叉树
AndyStevens 2013-12-23
  • 打赏
  • 举报
回复
维基百科。。。
参考资料:《数据结构》(C语言版)严蔚敏&&吴伟民&&米宁著 要求选用顺序存储结构和二叉链表存储结构实现抽象数据类型二叉树的基本操作。有个亮点是利用字符在dos界面显示二叉树的结构形态。 里面包含了完整的源程序和实验报告文档。 实验报告包含了完整的步骤包括: 一.抽象数据类型二叉树的定义 二.存储结构定义(包括顺序存储和二叉链表)及各基本操作的实现 三.测试方案。包括详细的测试函数 四.测试结果。对所有操作的测试过程中二叉树的变化截图。 五.二叉树各基本操作时间复杂度与存储结构特点分析及对算法的改进设想。 六.实验总结和体会 实现的基本操作如下: InitBiTree(&T) DestroyBiTree(&T) CreateBiTree(&T) ClearBiTree(&T) BiTreeEmpty(T) BiTreeDepth(T) Root(T) Value(T,e) Assign(T,&e,value) Parent(T,e) LeftChild(T,e) RightChild(T,e) LeftSibling(T,e) RightSibling(T,e) InsertChild(T,p,LR,c) DeleteChild(T,p,LR) PreOrderTraverse(T,Visit()) InOrderTraverse(T,Visit()) PostOrderTraverse(T,Visit()) LevelOrderTraverse(T,Visit()) 下载清单: Base.h //全局常量、公共变量、公共函数等 BiTree.h //二叉链表二叉树实现 BiTree_Main.cpp //二叉链表二叉树测试程序 SqBiTree.h //顺序存储二叉树实现 SqBiTree_Main.cpp //顺序存储二叉树测试程序 抽象数据类型实现-二叉树-实验报告.doc

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧