簡體   English   中英

java二進制搜索樹找到最近的葉子

[英]java binary search tree find closest leaf

我遇到一個找到最近葉子高度的方法有問題。 我所擁有的只是所有的葉子。 我是否必須將遞歸調用分成兩個條件語句來獨立檢查每個條件語句? 任何幫助或建議將不勝感激

這是我的方法

//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(n.getRight());

對於遇到的每個節點遞增dist ,使用一個static / class成員變量,每次調用closeLeaf函數時該變量都會遞增。

將遞歸限制為查找葉子,當找到一個葉子時, dist的值將為您提供最接近葉子的高度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM