数据结构(树转线性)最近公共祖先

来源:互联网 发布:mac 虚拟机 游戏 编辑:程序博客网 时间:2024/06/05 21:16
最近公共祖先问题(本文内容来源于何林的《数据结构关系的简化》)
比较机智的构造一个数据结构,讲树简化成线性的.
(下图来自《数据结构关系的简化》--何林)

找祖先,就是两个点之间深度最小的(●'◡'●)
To put it another way, that is 从叶子把父节点剖开两半,分别放在左和右。如果叶子结点有siblings的话如(4,5,6)那就每个都剖一次父节点,这样保证叶子结点的两边一定有父节点(也可以看出叶子结点和他的sibling的地位是对等的)。
从父节点的角度来看他只“包含”了子节点的信息。如此递归便可。
这个剖开向上的过程,就是二维向一维的转变。
然而这棵树的信息还是都保留了下来的。
问题边转化成了求区间最小值问题。
     其实个人觉得这是一个双向问题,完全暴力的想把二维的树化成一维,随意构造数据结构是没有任何作用的(因为可以有各种构造),还要考虑得到了一维的数据结构可以用什么方法来解决。如此在构造过程便要讲究技巧了。


    数据结构的联合。利用各种数据结构,将其结合起来,各种树套树,树套数套数之类。

0 0
原创粉丝点击