2017-03-24 19 views
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 

とMATLAB構造体を持っていますか?例えば、私は、ルートノードのためにプリントアウトしたい:

node 1 feature 1, tru 2, gain 3 

ノード2及び3ルートノードと同じ構造で、それぞれleftright構造体からのデータを含みます。

私は、私はその子を印刷する方法を得るカント

tree.feature 

tree.tru 

tree.gain 

で私のノード1を印刷することができ、私はノード1

ために上記のように再帰的に同じフォーマットを使用してツリー全体を印刷したいですすべてのノードに対して再帰的に実行されます。

+0

それは*私はあなたが*試してみました何と同じ形式 –

+1

を使用してツリー全体を印刷再帰したい停止しますか?たとえば、少なくともノード1の出力例を出力するコードがありますか?これは再帰的に行うために構築することができます... – Wolfie

+0

私はノード1で動作すると思ういくつかのコードを投稿しましたが、どのようにすべてのノードでこれを行うのですか? –

答えて

0

あなたは

printinfo(tree) 

を使用して、それを呼び出す最初は、この

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 

のような単純な再帰関数を持つことができるはずは次に、各ノードがない限り、そのそれぞれのrightleftノードの関数を呼び出しますコメントに記載されている停止条件に達した場合:

ノード機能、TRUとゲインの場合は-1

関連する問題