%Build the tree function [ tree ] = k_make_tree( patterns, targets, maxDepth ) if( (length(unique(targets))==1) || (maxDepth==0) ) % pure node plus tree depth ... tree.left = []; tree.right = []; %tree.class = targets(1); nb=length(find(targets==0)); ng=length(find(targets==1)); if( nb>=ng ) tree.class=0; else tree.class=1; end else %Find split point [dim,sval] = k_find_split(patterns, targets); ind_l = find(patterns(:,dim)<=sval); patterns_l = patterns(ind_l,:); targets_l = targets(ind_l); ind_r = find(patterns(:,dim)>sval); patterns_r = patterns(ind_r,:); targets_r = targets(ind_r); tree.dim = dim; tree.svalue = sval; tree.left = k_make_tree( patterns_l, targets_l, maxDepth-1 ); tree.right = k_make_tree( patterns_r, targets_r, maxDepth-1 ); end