二分木でノードの高さの合計を再帰的に見つける方法は?
例:
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に設定されているようです. これは良くない。