我想在MATLAB中使用递归来生成一个复制树形图的链接结构。
例如,一个非常简单的树形图可能会在通过调用linkage
函数生成的矩阵中表示。
1 2 1.0
4 3 1.5
第一个连接位于第1项和第2项之间,距离为1.0,第二个连接位于第3项和1和2的合并之间,由4表示,距离为1.5
因此,从这个矩阵我想要一个类似于node1.children = {node2,node3}和node2.children = {node4,node5}的结构。叶子注释是node3 item3,node4是项目1,node5是项目2。
我如何编写一个会产生这种结构的递归函数?
答案 0 :(得分:3)
我会创建一个node
类来自handle
。
classdef node<handle
properties
children
end
methods
% a method that parses the incoming matrix and hands it over to its
% children to do the same
end
end
这样做的好处是,在孩子中你可以像obj.children{end+1}=newChild
那样保存它,你保存的只是对孩子的引用,因为你是从handle
派生的。
答案 1 :(得分:0)
除了提到有一个节点类作为句柄的子类。
你可以非常优雅地使用这个策略: