0

我有一个具有以下结构的matlab结构

Tree:
feature : numerical value (= 1)
tru: numerical value (= 2)
gain: numerical value (= 3)
left: struct with left node
right: struct with right node

如何以树的形式打印出来?例如我想为根节点打印:

node 1 feature 1, tru 2, gain 3

节点 2 和 3 分别包含来自leftright结构的数据,其结构与根节点相同。

我想使用与上面描述的节点 1 相同的格式递归地打印整个树。

我可以通过打印我的节点 1

tree.feature

tree.tru

tree.gain

我不知道如何为所有节点递归地打印它的子节点。

4

1 回答 1

0

你应该能够有一个像这样的简单递归函数

function printinfo(node)

% Display the details from this node
disp(['Feature: ', num2str(node.feature), ...
    '\nTru: ', num2str(node.tru), ...
    '\nGain: ', num2str(node.gain)]);

% If any of feature, tru or gain aren't equal to -1, go into left and right
if node.feature ~= -1 || node.tru ~= -1 || node.gain ~= -1
    printinfo(node.left)
    printinfo(node.right)
end

end

最初使用

printinfo(tree)

然后每个节点调用其各自rightleft节点的函数,除非达到您在注释中描述的停止条件:

当节点特征 tru 和 gain 为 -1 时停止

于 2017-03-24T14:44:02.590 回答