利用递归建立树状图的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 如何编写递归函数来

我想在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


如何编写递归函数来生成这种类型的结构?

我将创建一个从
句柄
派生的
节点

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为此,我需要关于链接矩阵的更多信息。特别是如何计算合并指数。但基本上你只需要找出哪些节点是叶子,然后从那里开始通过添加父节点来构建树。