使用递归来构建树形图的matlab结构

时间:2012-07-17 03:05:37

标签: matlab recursion

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

我如何编写一个会产生这种结构的递归函数?

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)

除了提到有一个节点类作为句柄的子类。

你可以非常优雅地使用这个策略:

  1. 准备一个空列表以包含所有节点(单元格?)
  2. 当您读取一行时,查找节点是否在列表中 - 否则制作并添加它们
  3. 将孩子添加到父母
  4. 重复1.直到列表完成
  5. 现在从列表中获取根节点 - 它将在您想要的结构中