matlab/gtsam_tests/thinTreeBayesNet.m
function [bayesNet, tree] = thinTreeBayesNet(depth,width)
% thinTreeBayesNet

import gtsam.*
bayesNet = GaussianBayesNet;
tree = thinTree(depth,width);

% Add root to the Bayes net
model = noiseModel.Isotropic.Sigma(1, 3*rand(1));
gc = gtsam.GaussianConditional(1, 5*rand(1), 5*rand(1), model);
bayesNet.push_back(gc);

n=tree.getNumberOfElements();
for i=2:n
  % Getting the parents of that node
  parents = tree.getParents(i);
  di = tree.getNodeDepth(i);
  % Create and link the corresponding GaussianConditionals
  if tree.getW == 1 || di == 2
    % Creation of single-parent GaussianConditional
    model = noiseModel.Isotropic.Sigma(1, 5*rand(1));
    gc = gtsam.GaussianConditional(n-i, 5*rand(1), 5*rand(1), n-parents(1), 5*rand(1), model);
  elseif tree.getW == 2 || di == 3
    % GaussianConditionalj associated with the second parent
    model = noiseModel.Isotropic.Sigma(1, 5*rand(1));
    gc = gtsam.GaussianConditional(n-i, 5*rand(1), 5*rand(1), n-parents(1), 5*rand(1), n-parents(2), 5*rand(1), model);
  end
  % Add conditional to the Bayes net
  bayesNet.push_back(gc);
end

end