树形数据结构对应的小疑惑!

我需要确认一个自己的理解,(我知道可以在Triangular这里进行一次flatten后能确保后面的路径结构一致,这个并不是我的疑惑点,我的疑惑点如下图不进行flatten的情况)电池如图


在这里的树形数据运算的对应问题我的理解如下:

依次类推,就是当一级树和二级数发生运算的时候,是否是如同我连线的方式这样的?
那么这样的话,多出来的数据怎么办?还会做补偿性的运算么?

亦或者说它会忽略路径结构,直接依次运算,如下图:

这是我目前的一个疑惑!

额 我自己尝试着 进行了一次数据替换以便于观察,发现我的理解是错误的。它还是按照340个树枝进行对应的应运算的,也就是{0}和{0;0}运算,{1}和{0;1}进行运算依次类推了

是不是在这样的情况下当路径名不一致,但路径长度一直的情况下,相当于对二级树就{x;x}做了依次 {Path_index}后将其变为{x}再进行对应运算的?

一般为了后面便于管理我们会倾向于把左右两组数据处理成相同结构路径再进行运算,怎么处理取决于你想要两边怎么去结合运算,比如你要达成中间这张图的运算效果只要对右边的数据用Shift Paths后就行了,如果要达成平行对应运算的效果建议用Match Tree进行处理,两者数据结构不一样的电池相接很容易造成后续数据就无法找到对应关系了,不是特别需要这样的话,那就会很混乱。 :sweat_smile:


可以做个简单的案例,对比试验。

实践出真知。试一下就明确这个逻辑了。

关于路径方面,给一个个人建议经供参考:

方案1:努力去维护路径结构
方案2:拍平处理,等需要数据结构了,重新设计逻辑去分组

在满足如下条件时,我会倾向于方案2:
1:对数据结构已经滚瓜烂熟
2:能随时找到重新分组并构筑结构的逻辑
3:数据结构过于复杂,努力维护会耗费更多精力

如果程度已经很不错了,建议多操练实际的案例。
GH数据结构理论方面的研究再多,也是为了实践服务的。

1 个赞


刚才忘记说了
重构路径或者说重新分组的思路有两种
1:用自己给的逻辑
2:unflatten运算器

嗯,是的大鹿。其实我前面就是像知道数据匹配。
还原成拍平前的数据结构,我是理解的,除了unflatten,还可以利用replace patchs和 key/value search等还原。
正如您说的,还是要多操练实际项目了。

1 个赞