2010-03-07 32 views
0

我有一个简单的加权树,有根,节点和叶子。现在我想为从根到叶子的每条路径分配一个值,这将是所有权重的总和。MATLAB中的结构/类?

有没有创建一个有两个字段的结构的方法:值和一个向量(它将保存路径)即:(10,[root,node1,node3,node5])(路径长度不每次都不必一样!),然后我可以存储在一个矢量[path1 path2 path3 ...]中?

@编辑:另外,我知道有struct(),但我不喜欢它,有没有其他的方式来做到这一点?

回答

1

您应该看看单元格阵列是否可以实现您想要的功能:{10 [root,node1,node3,node5]}。阅读有关他们here

+0

会做,谢谢。 –

1

我建议将值和路径向量存储在两个单独的数组中,并将它们组合到一个结构中。您也可以将路径长度作为单独的矢量添加。它们将通过数组索引映射到对方。

leavesN = 20; % number of leaves 
treestruct.path = cell(leavesN,1); % to store path vectors 
treestruct.sumofweights = zeros(leavesN,1); % to store sum of weights 
treestruct.pathlength = zeros(leavesN,1); % to store path length 

treestuct.path{i} = [root,node1,node3,node5]; % I suppose those variables are numbers 
treestruct.sumofweights(i) = 10; 

treestruct.pathlength(i) = numel(treestuct.path{i}); 

或整个树:

treestruct.pathlength = cellfun(@numel,treestuct.path);