如何遞歸查找二叉樹中節點高度的總和?以遞歸方式查找二叉樹中節點高度的總和
例子:
public int totalHeight() {
return totalHeight(root);
}
private int totalHeight(BinaryNode<AnyType> n) {
int totalHeight = 0;
if (n.left == null && n.right == null)
return totalHeight;
if (n.left != null && n.right != null)
return totalHeight + 1
+ Math.max(totalHeight(n.left), totalHeight(n.right));
if (n.left != null)
return totalHeight + 1 + Math.max(totalHeight(n.left), -1);
if (n.right != null)
return totalHeight + 1 + Math.max(-1, totalHeight(n.right));
return totalHeight;
}
我已經試過這一點,但只得到了樹的所有節點的高度的高度,而不是總和。
我感覺很難跟蹤計數器的遞歸,似乎totalHeight
設置爲0,每次遞歸調用。不是很好。
該方法爲您提供單個節點的高度。如果你想創建另一個功能,將其應用到樹中的每個節點並添加結果?這將是O(n^2 * log n)(這是不好的),但會起作用。 – maasg 2012-07-13 10:13:00
使用全局變量來跟蹤總數。 – 2013-04-25 12:28:53