我在查找最近叶子高度的方法上遇到了问题。我只数了数所有的叶子。我是否必须将递归调用分为两个条件语句来独立检查每个条件语句?如有任何帮助或建议,将不胜感激
这是我的方法
//find the distance to the closest leaf
public int closeLeaf()
{
int distance;
return distance = closeLeaf(root);
}
private int closeLeaf(StringNode n)
{
int dist = 0;
if(n == null)
{
dist = 0;//empty tree
}
else if(n.getLeft()== null && n.getRight()== null)
{
dist++;
}
else
{
dist =closeLeaf(n.getLeft()) + closeLeaf(n.getRight());
}
return dist;
}
返回值
请不要这样做:
int distance;
return distance = closeLeaf(root);
只是:
return closeLeaf(root);
关于真正的问题
在这里,你要把到每片叶子的距离加起来:
dist = closeLeaf(n.getLeft()) + closeLeaf(n.getRight());
你可能只想得到两个值中的最小值(告诉你到最近值的距离(。
而不是
dist=closeLeaf(n.getLeft(((+closeLeaf;
为遇到的每个节点递增dist
,使用每次调用closeLeaf
函数时递增的静态/类成员变量。
将递归限制为查找一个叶,当您找到一个叶时,dist
的值将给出最接近的叶的高度。