0

我想在 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是item 1,node5是item 2。

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

4

2 回答 2

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

这样做的好处是你可以在 children 中保存它,obj.children{end+1}=newChild而你保存的只是对 child 的引用,因为你从handle.

于 2012-07-17T06:53:36.717 回答
0

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

您可以使用以下策略非常优雅地做到这一点:

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