我有一个图表,它的输入是这样的:
7
1个| 2个
1个| 3个
2个| 4个
2个| 5个
5个| 7个
3个| 6个
5 | 7
第一个数字是多个节点,例如1 | 2表示边缘从1到2.节点只能有两个子节点。我需要在位图上绘制它。我为树的深度写了一个递归函数,所以我可以划分位图的高度。但是现在我在绘制这棵树时遇到了麻烦,我无法编写绘制它的功能 请提出解决方法。感谢
for (int i = 0; i < 2; i++)
{
odkud = graf[i, 0];
kam = graf[i, 1];
najdiPotomka2(i, kam, vyska);
}
return maxVyska;
这是功能,这就是我获得深度的方式,递归函数是:
private Boolean najdiPotomka2(int stupen, int hodnota, int vyska)
{
vyska++;
int tempHodnota = hodnota;
for (int i = stupen + 1; i < pocetRadek; i++)
{
if (graf[i, 0] == tempHodnota)
{
if(najdiPotomka2(i, graf[i,1], vyska))
{
vyska++;
if (vyska > maxVyska) maxVyska = vyska;
if ((i + 1) <= pocetRadek) najdiPotomka2(i, graf[i + 1, 1], vyska - 1);
return true;
}
else
{
najdiPotomka2(i, tempHodnota, vyska-1);
return true;
}
}
}
if (vyska > maxVyska) maxVyska = vyska;
return false;
}
现在我正在制定步骤并试图找出是否可以直接实现这种递归函数的绘制。此外,我试图从这个网站实现树结构:http://www.slideshare.net/TelerikAcademy/21-trees-and-graphs-c-fundamentals但我得到错误“构造函数不能调用自己”,但那是另一个问题。