鱼C论坛

 找回密码
 立即注册
查看: 2006|回复: 6

[已解决]如何用一个宽度为 2 的二维数组存二叉树?

[复制链接]
发表于 2022-6-30 14:59:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
结构体 , 指针太麻烦了 , 之前有人告诉我这个方法 , 但是不知道怎么实现 ?
最佳答案
2022-7-31 16:23:04
S[i][0]存父节点下标
S[i][1]存数据
使用父亲表示法,利用了每个节点都只有一个父节点性质
但寻找子节点要遍历
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-30 15:07:23 From FishC Mobile | 显示全部楼层
可能因为 C 语言结构体 struct (链表)是动态,所以用结构体存二叉树最适合吧。

C++ 本身就是面向对象类型语言,动态储存方式有太多选择了(vector 或 string 就是其中例子)所以可以不用结构体存二叉树。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-30 19:26:40 | 显示全部楼层
我猜
s[N][3];
s[i][0]是数据
s[i][1]left(存的是下标)
s[i][2]right(存的是下标)
就像用数组模仿链表

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-1 20:25:33 | 显示全部楼层
jhq999 发表于 2022-6-30 19:26
我猜
s[N][3];
s[0]是数据

宽度为2,朋友
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-1 22:52:00 | 显示全部楼层

只能存left和right这两个数据下标,数据只能另外一个数组。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-2 07:10:53 | 显示全部楼层
jhq999 发表于 2022-7-1 22:52
只能存left和right这两个数据下标,数据只能另外一个数组。

是啊。
a[n]可以存(a左子为a[2*i],右子为a[2*i+1])
a[n][2]不行
a[n][3]可以(a数据是a[1],左子是a[a[0]],右子是a[a[2]])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-31 16:23:04 | 显示全部楼层    本楼为最佳答案   
S[i][0]存父节点下标
S[i][1]存数据
使用父亲表示法,利用了每个节点都只有一个父节点性质
但寻找子节点要遍历
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 19:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表