[英]Java Binary Search Tree _ the distance from root to nearest leaf
[英]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.