function [nodeList,visited] = dfs(start, adjMat, visited)
% depth-first search

%disp(sprintf('visit %d', start));
visited(start) = 1;

lnbr = adjMat(start, 1);
llist = [];
if (lnbr>=0),
	[llist,visited] = dfs(lnbr, adjMat, visited);
end

rnbr = adjMat(start, 2);
rlist = [];
if (rnbr>=0),
	[rlist,visited] = dfs(rnbr, adjMat, visited);
end

% return longer list
if (length(llist)>=length(rlist)),
	nodeList = [start llist];
else
	nodeList = [start rlist];
end
