利用递归建立树状图的matlab结构
我想在MATLAB中使用递归生成一个复制树状图的链接结构 例如,一个非常简单的树状图可以用调用利用递归建立树状图的matlab结构,matlab,recursion,Matlab,Recursion,我想在MATLAB中使用递归生成一个复制树状图的链接结构 例如,一个非常简单的树状图可以用调用链接函数生成的矩阵表示 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}的结构。其中叶注释为节点3项3,节点4项1,节点5项2 如何编写递归函数来
链接
函数生成的矩阵表示
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}的结构。其中叶注释为节点3项3,节点4项1,节点5项2
如何编写递归函数来生成这种类型的结构?我将创建一个从
句柄
派生的节点
类
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
classdef节点我将创建一个从句柄
派生的节点
类
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
classdef node除了提到将node类作为handle的子类之外
使用此策略,您可以非常优雅地完成此任务:
准备一个包含所有节点(单元?)的空列表
当您读取一行时,请查找节点是否在列表中,否则请创建它们并添加它们
将子项添加到父项
从1开始重复。直到列表完成
现在从列表中获取根节点-它将位于您想要的结构中
除了提到有一个节点类作为handle的子类之外
使用此策略,您可以非常优雅地完成此任务:
准备一个包含所有节点(单元?)的空列表
当您读取一行时,请查找节点是否在列表中,否则请创建它们并添加它们
将子项添加到父项
从1开始重复。直到列表完成
现在从列表中获取根节点-它将位于您想要的结构中
别忘了,对于一个孩子可以有几个父母的更复杂的结构来说,这是唯一的方法。你能写出构造器的样子吗?我很难理解如何解析包含链接信息的输入矩阵。谢谢@user1027169为此,我需要关于链接矩阵的更多信息。特别是如何计算合并指数。但基本上你只需要找出哪些节点是叶子,然后从那里开始通过添加父节点来构建树。不要忘记,对于一个子节点可以有多个父节点的更复杂结构,这是唯一的方法。你能写出构造函数的样子吗?我很难理解如何解析包含链接信息的输入矩阵。谢谢@user1027169为此,我需要关于链接矩阵的更多信息。特别是如何计算合并指数。但基本上你只需要找出哪些节点是叶子,然后从那里开始通过添加父节点来构建树。