我有一个带有根,节点和叶子的简单加权树。现在我想为从根到叶子的每条路径分配一个值,它将是所有权重的总和。
有没有办法创建一个包含2个字段的结构:值和向量(将保存路径),即:(10,[root,node1,node3,node5])(路径的长度不是' t每次都必须相同!)然后我可以将它存储在一个向量中[path1 path2 path3 ...]?
@Edit:另外,我知道有结构()但是我真的不喜欢它,还有其他办法吗?
答案 0 :(得分:1)
您应该看看单元格数组是否符合您的要求:{10 [root,node1,node3,node5]}
。阅读他们here。
答案 1 :(得分: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);