java二进制搜索树查找最接近的叶子



我在查找最近叶子高度的方法上遇到了问题。我只数了数所有的叶子。我是否必须将递归调用分为两个条件语句来独立检查每个条件语句?如有任何帮助或建议,将不胜感激

这是我的方法

//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的值将给出最接近的叶的高度。

最新更新