24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1329  |  回复: 11
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

rainbowguy

银虫 (正式写手)


[交流] 【求助】关于未知树状结构存储的问题?请大虾指教!

动态变化演变的数值,这些数值的动态演化、变化过程符合树状的发展,因此我想用树状结构存储这些动态变化演变的数值。但是无法预知整棵树的变化情况,包括树到底有多少层,父树结点有多少个子树结点(但子树结点<8)等。
我的问题是:
(1)这个动态变化、演变的数值(与时间步长有关系)怎样用树状结构实时存储?
(2)如果无法用树状结构去实时存储这些数值,那有没有更好的一种方式去存储这些数值?注:这些数值的演变、动态变化是符合树结构的演化的,即父生子、子生孙的演变关系。

请大虾指教!
回复此楼

» 猜你喜欢

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rainbowguy

银虫 (正式写手)


引用回帖:
Originally posted by sudo at 2011-04-03 11:14:44:
你指的是,比如说,有两个节点原来是父子节点,变化后就可能不是父子节点了,是这个意思?

可能是我的表述有问题,没有说清楚。
举个例子,比如一个符合树状结构的系列数值(如身高),这些数值对象具有这种父子结构,但这些数值(身高)具体是多少是提前未知的,当然我们也不可能提前知道。一个父(父亲)数值(身高)有几个子(儿子)数值(身高)也是未知的,就是这样一代一代繁衍下去;同时,这个繁衍过程还满足以下三个假设条件:
(1)一个父亲最多有8个儿子;但如果满足条件T,则这个父亲会没有儿子;
(2)每个人的身高是他上一代的父亲身高的一个函数,如果知道上一代他父亲的身高,就可以计算出他儿子的身高;
(3)每个人的生育下一代(即有儿子)的时间与这个人的身高有关,我们姑且假设认为身高越高,那他吸引异性能力越大,结婚也就越早,生育下一代孩子的时间也就越早,即有下一代的时间间隔越短。我们根据这个人的身高可以计算出生育下一代的时间间隔。
当时间过了1000年后,这个家族的图谱及其中每个人的身高怎样去描述和存储?总不能先设定一个树状结构吧,因为你不知道这个树状结构有多少层,其中每一层中每个父亲有几个儿子。只有当你知道了上一层父亲的身高时,才能知道儿子的身高,也才能知道从父亲到儿子的时间间隔;也就是说,只有你知道了上一层的确切数值后,才能知道下一层的确认数值,但是在程序中是无法实现的,总不能这样吧:
for(int i=1;i<上一代父亲所生儿子数;i++)
{
   ..........//计算这一代身高、每代时间、有几个儿子;
   for(int j=1;j<上一代父亲所生儿子数;j++)
   {
     ..........//计算这一代身高、每代时间、有几个儿子;
     for()
     {..........//计算这一代身高、每代时间、有几个儿子;
     }
   }
}
上述这种是无法用代码实现,因为你不知道有多少代,即在程序中你不知道要写多少个for循环。
这样不知道说清楚了没有?这样怎样进行计算模拟?

[ Last edited by rainbowguy on 2011-4-3 at 18:56 ]
10楼2011-04-03 18:20:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

sudo

木虫 (正式写手)


★ ★
微尘、梦想(金币+2): 谢谢回复…… 2011-04-03 17:55:23
树状结构显然可以存储啊,无非就是一堆指针指来指去...
2楼2011-04-02 16:45:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rainbowguy

银虫 (正式写手)


引用回帖:
Originally posted by sudo at 2011-04-02 16:45:40:
树状结构显然可以存储啊,无非就是一堆指针指来指去...

大虾没明白我的意思,这是动态变化的树,你不知道树的具体结构,但是要存储它,怎么办?
3楼2011-04-02 17:14:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)


引用回帖:
Originally posted by rainbowguy at 2011-04-02 17:14:00:
大虾没明白我的意思,这是动态变化的树,你不知道树的具体结构,但是要存储它,怎么办?

呃,虽然树的具体结构不知道,不过,每个节点的结构可以定下来(根据你的描述,不知道我理解是否正确)

struct node{
    int value;
    struct node* pchild[8];
}

然后像创建树根节点,插入子节点什么的,都可以用树的相关算法实现啊...

不知道你的具体需求是什么?
4楼2011-04-02 17:24:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见